diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..3060722 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,32 @@ +name: Release CLI Tool + +on: + push: + tags: + - "v[0-9]+.[0-9]+.[0-9]+" + +permissions: + contents: write + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.16 + + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + distribution: goreleaser + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index b6ca3be..81979b0 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ release/ vendor/ _vendor-* +dist/ diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000..74a7feb --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,76 @@ +before: + hooks: + - go mod tidy +builds: + - env: + - CGO_ENABLED=0 + goos: + - linux + - windows + - darwin + ldflags: + - -s -w -X github.com/kentaro-m/md2confl/cmd.version={{.Version}} -X github.com/kentaro-m/md2confl/cmd.commit={{.Commit}} -X github.com/kentaro-m/md2confl/cmd.date={{.Date}} -X github.com/kentaro-m/md2confl/cmd.builtBy=goreleaser +archives: + - replacements: + darwin: Darwin + linux: Linux + windows: Windows + 386: i386 + amd64: x86_64 +checksum: + name_template: 'checksums.txt' +snapshot: + name_template: "{{ .Tag }}-next" +changelog: + sort: asc + filters: + exclude: + - '^docs:' + - '^test:' +brews: + - + name: md2confl + + # NOTE: make sure the url_template, the token and given repo (github or gitlab) owner and name are from the + # same kind. We will probably unify this in the next major version like it is done with scoop. + + # GitHub/GitLab repository to push the formula to + # Gitea is not supported yet, but the support coming + tap: + owner: kentaro-m + name: homebrew-md2confl + + # Template for the url which is determined by the given Token (github or gitlab) + url_template: "http://github.com/kentaro-m/md2confl/releases/download/{{ .Tag }}/{{ .ArtifactName }}" + + # Git author used to commit to the repository. + # Defaults are shown. + commit_author: + name: goreleaserbot + email: goreleaser@carlosbecker.com + + # Folder inside the repository to put the formula. + # Default is the root folder. + folder: Formula + + # Your app's homepage. + # Default is empty. + homepage: "https://github.com/kentaro-m/md2confl" + + # Template of your app's description. + # Default is empty. + description: "md2confl is a CLI tool to convert the markdown text to confluence wiki format." + + # SPDX identifier of your app's license. + # Default is empty. + license: "MIT" + + # So you can `brew test` your formula. + # Default is empty. + test: | + system "#{bin}/md2confl --version" + + # Custom install script for brew. + # Default is 'bin.install "program"'. + install: | + bin.install "md2confl" diff --git a/cmd/root.go b/cmd/root.go index 7c94093..ea8f8fd 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -13,13 +13,16 @@ import ( "golang.org/x/term" ) -// Current version number -const ( - VERSION = "0.2.0" +//nolint // these variables are set in build step +var ( + version = "dev" + commit = "none" + date = "unknown" + builtBy = "unknown" ) var ( - version bool + isShowVersion bool ) var rootCmd = &cobra.Command{ @@ -34,8 +37,8 @@ var rootCmd = &cobra.Command{ // Run executes md2confl command func Run(cmd *cobra.Command, args []string) error { - if version { - fmt.Fprintf(os.Stdout, "v%v\n", VERSION) + if isShowVersion { + fmt.Fprintf(os.Stdout, "v%v\n", version) return nil } @@ -78,7 +81,7 @@ func output(input []byte) { func init() { cobra.EnableCommandSorting = false - rootCmd.Flags().BoolVarP(&version, "version", "v", false, "Output the version number") + rootCmd.Flags().BoolVarP(&isShowVersion, "version", "v", false, "Output the version number") } // Execute runs the root Cmd