diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9276589..1151730 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,6 +44,12 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 + - name: Get Casbin version from go.mod + id: go-mod-version + run: | + version=$(go list -m -json github.com/casbin/casbin/v2 | jq -r .Version) + echo "version=$version" >> $GITHUB_OUTPUT + - name: Run GoReleaser uses: goreleaser/goreleaser-action@v6 with: @@ -52,3 +58,4 @@ jobs: args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CASBIN_VERSION: ${{ steps.go-mod-version.outputs.version }} diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 85d2bf8..3a5136e 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -30,6 +30,7 @@ builds: - -X {{ .ModulePath }}/cmd.BuildTime={{.Date}} - -X {{ .ModulePath }}/cmd.GitHash={{.FullCommit}} - -X {{ .ModulePath }}/cmd.GitTag={{.Tag}} + - -X {{ .ModulePath }}/cmd.CasbinVersion={{.Env.CASBIN_VERSION}} archives: - format: tar.gz diff --git a/cmd/version.go b/cmd/version.go index e2238ac..b922e47 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -16,33 +16,15 @@ package cmd import ( "fmt" - "os" - "strings" "github.com/spf13/cobra" ) var ( - Version = "dev" + Version = "dev" + CasbinVersion = "dev" ) -func getCasbinVersion() string { - data, err := os.ReadFile("go.mod") - if err != nil { - return "dev" - } - - for _, line := range strings.Split(string(data), "\n") { - if strings.Contains(line, "github.com/casbin/casbin/v2") { - parts := strings.Fields(line) - if len(parts) > 1 { - return parts[1] - } - } - } - return "dev" -} - func init() { rootCmd.Flags().BoolP("version", "v", false, "Print version information") @@ -50,7 +32,7 @@ func init() { rootCmd.Run = func(cmd *cobra.Command, args []string) { if v, _ := cmd.Flags().GetBool("version"); v { fmt.Printf("casbin-go-cli version: %s\n", Version) - fmt.Printf("casbin version: %s\n", getCasbinVersion()) + fmt.Printf("casbin version: %s\n", CasbinVersion) return } if oldRun != nil {