diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 38ff07d66a..2ce623da8f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -234,6 +234,9 @@ jobs: with: go-version-file: src/go.mod + - id: version + run: echo "::set-output name=version::$(git describe --exact-match --tags $(git rev-parse HEAD) 2>/dev/null || echo unreleased)-$(git rev-parse --short HEAD)" + - name: Run GoReleaser uses: goreleaser/goreleaser-action@v3 # TODO(meain): make sure release builds work with: @@ -244,6 +247,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} RUDDERSTACK_CORSO_WRITE_KEY: ${{ secrets.RUDDERSTACK_CORSO_WRITE_KEY }} RUDDERSTACK_CORSO_DATA_PLANE_URL: ${{ secrets.RUDDERSTACK_CORSO_DATA_PLANE_URL }} + CORSO_VERSION: ${{ steps.version.outputs.version }} - name: Upload assets uses: actions/upload-artifact@v3 @@ -306,10 +310,11 @@ jobs: - uses: actions/checkout@v3 - name: Build Corso Binaries - run: > - export CORSO_BUILD_LDFLAGS="-X 'github.com/alcionai/corso/src/internal/events.RudderStackWriteKey=${{ secrets.RUDDERSTACK_CORSO_WRITE_KEY }}' -X 'github.com/alcionai/corso/src/internal/events.RudderStackDataPlaneURL=${{ secrets.RUDDERSTACK_CORSO_DATA_PLANE_URL }}'" - ./build.sh - --platforms ${{ env.PLATFORMS }} + run: | + export CORSO_BUILD_LDFLAGS="-X 'github.com/alcionai/corso/src/internal/events.RudderStackWriteKey=${{ secrets.RUDDERSTACK_CORSO_WRITE_KEY }}' \ + -X 'github.com/alcionai/corso/src/internal/events.RudderStackDataPlaneURL=${{ secrets.RUDDERSTACK_CORSO_DATA_PLANE_URL }}' \ + -X 'github.com/alcionai/corso/src/cli.version=$(git describe --exact-match --tags $(git rev-parse HEAD) 2>/dev/null || echo unreleased)-$(git rev-parse --short HEAD)'" + ./build.sh --platforms ${{ env.PLATFORMS }} # apparently everyone uses this step - name: Set up QEMU diff --git a/src/.gitignore b/src/.gitignore index 849ddff3b7..bca1e9bf20 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1 +1,2 @@ dist/ +corso diff --git a/src/.goreleaser.yaml b/src/.goreleaser.yaml index e3ab77689d..e79b2a92d1 100644 --- a/src/.goreleaser.yaml +++ b/src/.goreleaser.yaml @@ -13,6 +13,7 @@ builds: - goos: windows goarch: arm64 ldflags: + - -X 'github.com/alcionai/corso/src/cli.version={{.Env.CORSO_VERSION}}' - -X 'github.com/alcionai/corso/src/internal/events.RudderStackWriteKey={{.Env.RUDDERSTACK_CORSO_WRITE_KEY}}' - -X 'github.com/alcionai/corso/src/internal/events.RudderStackDataPlaneURL={{.Env.RUDDERSTACK_CORSO_DATA_PLANE_URL}}' diff --git a/src/Makefile b/src/Makefile index ebb59cd019..c7f7c656b7 100644 --- a/src/Makefile +++ b/src/Makefile @@ -8,6 +8,10 @@ BAD_LINT_MSG := "Missing golangci-lint version $(WANTED_LINT_VERSION). Visit $(I .PHONY: check-lint check-lint-version lint +build: + go build -o corso -ldflags \ + "-X 'github.com/alcionai/corso/src/cli/version.Version=$(shell git describe --exact-match --tags $(git rev-parse HEAD) 2>/dev/null || echo unreleased)-$(shell git rev-parse --short HEAD)'" + lint: check-lint-version golangci-lint run diff --git a/src/cli/cli.go b/src/cli/cli.go index c34722de20..3a7140b74a 100644 --- a/src/cli/cli.go +++ b/src/cli/cli.go @@ -19,6 +19,8 @@ import ( "github.com/alcionai/corso/src/pkg/logger" ) +var version = "dev" + // ------------------------------------------------------------------------------------------ // Corso Command // ------------------------------------------------------------------------------------------ @@ -33,16 +35,12 @@ var corsoCmd = &cobra.Command{ PersistentPreRunE: config.InitFunc(), } -// the root-level flags -var ( - version bool -) - // Handler for flat calls to `corso`. // Produces the same output as `corso --help`. func handleCorsoCmd(cmd *cobra.Command, args []string) error { - if version { - print.Infof(cmd.Context(), "Corso\nversion:\tpre-alpha\n") + v, _ := cmd.Flags().GetBool("version") + if v { + print.Infof(cmd.Context(), "Corso\nversion: "+version) return nil } @@ -64,7 +62,7 @@ func BuildCommandTree(cmd *cobra.Command) { // want to order flags explicitly cmd.PersistentFlags().SortFlags = false - cmd.Flags().BoolP("version", "v", version, "current version info") + cmd.Flags().BoolP("version", "v", false, "current version info") cmd.PersistentPostRunE = config.InitFunc() config.AddConfigFlags(cmd) logger.AddLogLevelFlag(cmd)