Change summary
.github/workflows/nightly.yml | 12 ++++
.github/workflows/release.yml | 46 +++++-------------
.gitignore | 3 +
.goreleaser.yml | 90 +++++++++++++++++++++++++++++-------
4 files changed, 101 insertions(+), 50 deletions(-)
Detailed changes
@@ -0,0 +1,12 @@
+name: nightly
+
+on:
+ schedule:
+ - cron: "0 0 * * *" # every day at midnight
+ workflow_dispatch: # allows manual triggering
+
+jobs:
+ nightly:
+ uses: charmbracelet/meta/.github/workflows/nightly.yml@main
+ secrets:
+ goreleaser_key: ${{ secrets.GORELEASER_KEY }}
@@ -1,40 +1,22 @@
-name: release
+# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
+
+name: goreleaser
on:
- workflow_dispatch:
push:
tags:
- - "*"
-
-concurrency: ${{ github.workflow }}-${{ github.ref }}
+ - v*.*.*
-permissions:
- contents: write
- packages: write
+concurrency:
+ group: goreleaser
+ cancel-in-progress: true
jobs:
goreleaser:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- with:
- fetch-depth: 0
-
- - run: git fetch --force --tags
-
- - uses: actions/setup-go@v5
- with:
- go-version: ">=1.23.2"
- cache: true
- cache-dependency-path: go.sum
-
- - run: go mod download
-
- - uses: goreleaser/goreleaser-action@v6
- with:
- distribution: goreleaser
- version: latest
- args: release --clean
- env:
- GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_TOKEN }}
- AUR_KEY: ${{ secrets.AUR_KEY }}
+ uses: charmbracelet/meta/.github/workflows/goreleaser.yml@main
+ secrets:
+ gh_pat: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
+ goreleaser_key: ${{ secrets.GORELEASER_KEY }}
+ fury_token: ${{ secrets.FURY_TOKEN }}
+ nfpm_gpg_key: ${{ secrets.NFPM_GPG_KEY }}
+ nfpm_passphrase: ${{ secrets.NFPM_PASSPHRASE }}
@@ -44,3 +44,6 @@ Thumbs.db
.crush/
crush
+
+manpages/
+completions/
@@ -4,6 +4,10 @@ version: 2
project_name: crush
+includes:
+ - from_url:
+ url: charmbracelet/meta/main/notarize.yaml
+
metadata:
mod_timestamp: "{{ .CommitTimestamp }}"
license: "MIT"
@@ -12,6 +16,29 @@ metadata:
maintainers:
- "kujtimiihoxha <kujtim@charm.sh>"
+nightly:
+ publish_release: true
+ keep_single_release: true
+ version_template: "{{ incminor .Version }}-nightly"
+
+snapshot:
+ version_template: "0.0.0-{{ .Timestamp }}"
+
+before:
+ hooks:
+ - go mod tidy
+ - rm -rf completions
+ - mkdir completions
+ - rm -rf manpages
+ - mkdir manpages
+ - sh -c 'go run . completion bash >./completions/crush.bash'
+ - sh -c 'go run . completion zsh >./completions/crush.zsh'
+ - sh -c 'go run . completion fish >./completions/crush.fish'
+ - sh -c 'go run . man | gzip -c >./manpages/crush.1.gz'
+
+gomod:
+ proxy: true
+
builds:
- env:
- CGO_ENABLED=0
@@ -24,19 +51,22 @@ builds:
- arm64
ldflags:
- -s -w -X github.com/charmbracelet/crush/internal/version.Version={{.Version}}
- main: ./main.go
archives:
- - formats: [tar.gz]
- name_template: >-
- crush-
- {{- if eq .Os "darwin" }}mac-
- {{- else if eq .Os "windows" }}windows-
- {{- else if eq .Os "linux" }}linux-{{end}}
+ - name_template: >-
+ crush_
+ {{- .Version }}_
+ {{- title .Os }}_
{{- if eq .Arch "amd64" }}x86_64
- {{- else if eq .Arch "#86" }}i386
+ {{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
- {{- if .Arm }}v{{ .Arm }}{{ end }}
+ {{- with .Arm}}v{{ . }}{{ end }}
+ wrap_in_directory: true
+ files:
+ - README*
+ - LICENSE*
+ - manpages/*
+ - completions/*
format_overrides:
- goos: windows
formats: [zip]
@@ -44,18 +74,36 @@ archives:
checksum:
name_template: "checksums.txt"
-snapshot:
- version_template: "0.0.0-{{ .Timestamp }}"
-
aurs:
- private_key: "{{ .Env.AUR_KEY }}"
- git_url: "ssh://aur@aur.archlinux.org/charmbracelet-bin.git"
+ git_url: "ssh://aur@aur.archlinux.org/crush-bin.git"
provides:
- crush
conflicts:
- crush
package: |-
- install -Dm755 ./crush "${pkgdir}/usr/bin/crush"
+ cd "${srcdir}/crush_${pkgver}_Linux_${CARCH}"
+ # bin
+ install -Dm755 "./crush" "${pkgdir}/usr/bin/crush"
+ # license
+ mkdir -p "${pkgdir}/usr/share/licenses/crush/"
+ install -Dm644 ./LICENSE* "${pkgdir}/usr/share/licenses/crush/"
+ # completions
+ mkdir -p "${pkgdir}/usr/share/bash-completion/completions/"
+ mkdir -p "${pkgdir}/usr/share/zsh/site-functions/"
+ mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d/"
+ install -Dm644 "./completions/crush.bash" "${pkgdir}/usr/share/bash-completion/completions/crush"
+ install -Dm644 "./completions/crush.zsh" "${pkgdir}/usr/share/zsh/site-functions/_crush"
+ install -Dm644 "./completions/crush.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/crush.fish"
+ # man pages
+ install -Dm644 "./manpages/crush.1.gz" "${pkgdir}/usr/share/man/man1/crush.1.gz"
+ # readme
+ mkdir -pv "${pkgdir}/usr/share/doc/crush/"
+ install -Dm644 README* "${pkgdir}/usr/share/doc/crush/"
+
+furies:
+ - account: "{{ with .Env.FURY_TOKEN }}charmcli{{ else }}{{ end }}"
+ secret_name: FURY_TOKEN
homebrew_casks:
- repository:
@@ -66,10 +114,16 @@ nfpms:
- formats:
- deb
- rpm
- file_name_template: >-
- {{ .ProjectName }}-
- {{- if eq .Os "darwin" }}mac
- {{- else }}{{ .Os }}{{ end }}-{{ .Arch }}
+ file_name_template: "{{ .ConventionalFileName }}"
+ contents:
+ - src: ./completions/crush.bash
+ dst: /etc/bash_completion.d/crush
+ - src: ./completions/crush.fish
+ dst: /usr/share/fish/vendor_completions.d/crush.fish
+ - src: ./completions/crush.zsh
+ dst: /usr/share/zsh/site-functions/_crush
+ - src: ./manpages/crush.1.gz
+ dst: /usr/share/man/man1/crush.1.gz
changelog:
sort: asc