diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..ce3a826 --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,158 @@ +version: 2 + +before: + hooks: + - go mod tidy + - go generate ./... + - task gen:completions + - task gen:manpage + +builds: + - id: storm-linux-amd64 + main: ./cmd + binary: storm + env: + - CGO_ENABLED=0 + goos: + - linux + goarch: + - amd64 + + - id: storm-linux-arm64 + main: ./cmd + binary: storm + env: + - CGO_ENABLED=0 + goos: + - linux + goarch: + - arm64 + + - id: storm-linux-386 + main: ./cmd + binary: storm + env: + - CGO_ENABLED=0 + goos: + - linux + goarch: + - "386" + + - id: storm-windows-amd64 + main: ./cmd + binary: storm.exe + env: + - CGO_ENABLED=0 + goos: + - windows + goarch: + - amd64 + + - id: storm-windows-arm64 + main: ./cmd + binary: storm.exe + env: + - CGO_ENABLED=0 + goos: + - windows + goarch: + - arm64 + + - id: storm-windows-386 + main: ./cmd + binary: storm.exe + env: + - CGO_ENABLED=0 + goos: + - windows + goarch: + - "386" + + - id: storm-darwin-amd64 + main: ./cmd + binary: storm + env: + - CGO_ENABLED=0 + goos: + - darwin + goarch: + - amd64 + + - id: storm-darwin-arm64 + main: ./cmd + binary: storm + env: + - CGO_ENABLED=0 + goos: + - darwin + goarch: + - arm64 + +archives: + - id: default + ids: + - storm-linux-amd64 + - storm-linux-arm64 + - storm-linux-386 + - storm-windows-amd64 + - storm-windows-arm64 + - storm-windows-386 + - storm-darwin-amd64 + - storm-darwin-arm64 + formats: + - tar.gz + name_template: >- + {{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }} + format_overrides: + - goos: windows + formats: + - zip + + - id: extras + meta: true + ids: + - storm-linux-amd64 + name_template: >- + {{ .ProjectName }}_{{ .Version }}_extras + files: + - "completions/*" + - "manpages/*" + +changelog: + sort: asc + filters: + exclude: + - "^docs:" + - "^test:" + +release: + footer: | + --- + Made by [Owais](https://github.com/desertthunder/desertthunder). + +homebrew_casks: + - name: storm + repository: + owner: stormlightlabs + name: homebrew-tap + branch: main + homepage: "https://github.com/stormlightlabs/git-storm" + description: "A changelog manager with TUIs for review and release" + license: MIT + url: + template: "https://github.com/stormlightlabs/git-storm/releases/download/{{ .Tag }}/{{ .ArtifactName }}" + verified: "github.com/stormlightlabs/git-storm/" + binaries: + - storm + manpages: + - manpages/storm.1 + completions: + bash: completions/storm.bash + zsh: completions/storm.zsh + fish: completions/storm.fish + directory: casks + commit_msg_template: "Brew cask update for Storm version {{ .Tag }}" + skip_upload: false + ids: + - default + - extras diff --git a/Taskfile.yml b/Taskfile.yml index e27b2fb..f3a28ed 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -93,3 +93,30 @@ tasks: - task: tidy - task: build - echo "Setup complete." + + gen:completions: + desc: Generate shell completion files + cmds: + - | + rm -rf completions + mkdir -p completions + for sh in bash zsh fish; do + go run ./cmd completion "$sh" > completions/storm."$sh" + done + sources: + - "**/*.go" + generates: + - "completions/{{.BINARY_NAME}}.bash" + - "completions/{{.BINARY_NAME}}.zsh" + - "completions/{{.BINARY_NAME}}.fish" + + gen:manpage: + desc: Generate man page file + cmds: + - rm -rf manpages + - mkdir -p manpages + - go run ./cmd man > manpages/{{.BINARY_NAME}}.1 + sources: + - "**/*.go" + generates: + - "manpages/{{.BINARY_NAME}}.1" diff --git a/cmd/main.go b/cmd/main.go index 7a94d4d..0ab1761 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -43,7 +43,7 @@ and can review commits interactively through a TUI.`, root.PersistentFlags().StringVarP(&output, "output", "o", "CHANGELOG.md", "Output changelog file path") root.AddCommand(generateCmd(), unreleasedCmd(), releaseCmd(), bumpCmd(), diffCmd(), checkCmd(), versionCmd()) - if err := fang.Execute(ctx, root, fang.WithColorSchemeFunc(style.NewColorScheme), fang.WithoutCompletions()); err != nil { + if err := fang.Execute(ctx, root, fang.WithColorSchemeFunc(style.NewColorScheme)); err != nil { log.Fatalf("Execution failed: %v", err) } }