Giter Club home page Giter Club logo

compver's Introduction

CompVer

CompVer

GitHub go.mod Go version of a Go module Go Test Docker Test CodeQL Docker Build CompVer Assets Go Reference Go Report Card GitHub issues GitHub forks GitHub stars GitHub license

With this small cli tool, you can compare two versions with each other. Or perform other operations around the version number. Currently, it is important to know that we only compare the version core x.y.z. This means that currently the pre-releases and the meta information are not taken into account. But you can read pre-releases and metadata from a version using our tool. For this you can use the core command.

Our version specifications are based on semantic versioning. Here you can find the corresponding definition. So that major, minor and patch can be read correctly, we use regex. You can find here at regex101 once the used expression.

Installation

go install

If you have Go installed on your local machine, you can install the tool via the following command.

go install github.com/gowizzard/compver/v5@latest

Install binary

If you don't want to install Go on your local machine, you can also use the binary. In order to install the tool correctly, you need to download it here and make it executable. After that you can move the binary into the application folder and use it via the terminal.

# Download the binary
curl -L -o compver https://github.com/gowizzard/compver/releases/latest/download/compver-<ARCH>-<OS>

# Make the binary executable 
chmod +x compver

# Move to application directory
sudo mv compver /usr/local/bin

How to use

Here you can find the different statements you can use.

Compare versions

Actually, you don't need to know much to execute the command. You actually only compare the newest version with the older version. We assume that VERSION1 is the newer version and VERSION2 is the older one. But downgrades of versions can also be recorded.

compver -compare -version1 <VERSION1> -version2 <VERSION2>

If this command is executed now, we get an information back, this can contain the following information: no changes, major update, major downgrade, minor update, minor downgrade, patch update & patch downgrade.

Get version core block

If you want to read a block of the version core, you can do this with the following command. You will receive the number of the block as an answer. You can read and return the blocks major, minor, patch, prerelease and buildmetadata.

compver -core -block major -version1 <VERSION1>

Trim prefix

So that you can also read versions that do not directly correspond to the semantic versioning, we have added the trim function. So you can also read and compare a version with a preceding v by calling the prefix with the trim command as follows.

compver -core -block minor -version1 <VERSION1> -trim -prefix <PREFIX> 

Using the GitHub Action

Here you can find an example if you want to use CompVer as a GitHub Action. In the example the action is only triggered when a new release is created.

I use this example a lot when I need to maintain major branches. Especially when developing Golang libraries this is very important. The action takes the release version and determines the major block of the version core. Then the version branch, for example v3, is merged with the default branch, so that the version branch is always up-to-date. So you only have to create the branch once and don't have to worry about it not being maintained.

name: CompVer

on:
  push:
    tags:
      - "v*.*.*"

env:
  USER_NAME: "GitHub Action"
  USER_EMAIL: "[email protected]"
  DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
  COMMIT_MESSAGE: "ci: The data of the master branch was merged automatically."

jobs:
  version:
    runs-on: ubuntu-latest
    steps:

      - name: Clone repository
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Get the major version
        id: compver
        env:
          GITHUB_TOKEN: ${{ github.token }}
        uses: gowizzard/compver@v5
        with:
          args: "-core -block major -version1 ${{ github.ref_name }} -trim -prefix v"

      - name: Set git config
        run: |
          git config --local user.name "$USER_NAME"
          git config --local user.email "$USER_EMAIL"

      - name: Merge data from default branch
        run: |
          git fetch
          git checkout v${{ steps.compver.outputs.core_result }}
          git pull
          git merge --no-ff "origin/$DEFAULT_BRANCH" -m "$COMMIT_MESSAGE"
          git push

Special thanks

Thanks to JetBrains for supporting me with this and other open source projects.

compver's People

Contributors

gowizzard avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.