From 139761cc28050b00bca22573d765f2b94af89bac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20T=C3=B6lle?= Date: Thu, 9 May 2024 20:38:26 +0200 Subject: [PATCH] feat: packaging for deb, rpm, apk, aur (#17) --- .github/workflows/release.yaml | 1 + .gitignore | 1 + .goreleaser.yaml | 83 ++++++++++++++++++++++++++++++++-- scripts/completions.sh | 7 +++ 4 files changed, 89 insertions(+), 3 deletions(-) create mode 100755 scripts/completions.sh diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a35afdc..2a3fc50 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -24,3 +24,4 @@ jobs: args: release --clean env: GITHUB_TOKEN: ${{ secrets.RELEASE_GH_TOKEN }} + AUR_SSH_KEY: ${{ secrets.RELEASE_AUR_SSH_KEY }} diff --git a/.gitignore b/.gitignore index cde0123..0e33ea6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ dist/ +completions/ diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 3d820ff..ac3b3c2 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -2,16 +2,23 @@ version: 1 +before: + hooks: + - ./scripts/completions.sh + builds: - env: - CGO_ENABLED=0 - ldflags: - - -X {{ .ModulePath }}/internal/version.version={{ .Version }} - - -X {{ .ModulePath }}/internal/version.versionPrerelease= goos: - linux - windows - darwin + mod_timestamp: "{{ .CommitTimestamp }}" + flags: + - -trimpath + ldflags: + - -X {{ .ModulePath }}/internal/version.version={{ .Version }} + - -X {{ .ModulePath }}/internal/version.versionPrerelease= archives: - format: tar.gz @@ -28,6 +35,76 @@ archives: - goos: windows format: zip + files: + - README.md + - LICENSE + - completions/* + +nfpms: + - id: default + file_name_template: "{{ .ConventionalFileName }}" + package_name: hcloud-upload-image + vendor: Julian Tölle + homepage: https://github.com/apricote/hcloud-upload-image + maintainer: Julian Tölle + formats: + - deb + - rpm + - apk + description: Manage custom OS images on Hetzner Cloud. + license: MIT + dependencies: + - openssh + recommends: + - hcloud-cli + + contents: + - src: ./completions/hcloud-upload-image.bash + dst: /usr/share/bash-completion/completions/hcloud-upload-image + file_info: + mode: 0644 + - src: ./completions/hcloud-upload-image.fish + dst: /usr/share/fish/vendor_completions.d/hcloud-upload-image.fish + file_info: + mode: 0644 + - src: ./completions/hcloud-upload-image.zsh + dst: /usr/share/zsh/vendor-completions/_hcloud-upload-image + file_info: + mode: 0644 + - src: ./LICENSE + dst: /usr/share/doc/hcloud-upload-image/license + file_info: + mode: 0644 + + +aurs: + - name: hcloud-upload-image-bin + homepage: "https://github.com/apricote/hcloud-upload-image" + description: Manage custom OS images on Hetzner Cloud. + maintainers: + - "Julian Tölle " + license: MIT + private_key: "{{ .Env.AUR_SSH_KEY }}" + git_url: "ssh://aur@aur.archlinux.org/hcloud-upload-image-bin.git" + depends: + - openssh + + package: |- + # bin + install -Dm755 "./hcloud-upload-image" "${pkgdir}/usr/bin/hcloud-upload-image" + + # license + install -Dm644 "./LICENSE" "${pkgdir}/usr/share/licenses/hcloud-upload-image/LICENSE" + + # 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/hcloud-upload-image.bash" "${pkgdir}/usr/share/bash-completion/completions/hcloud-upload-image" + install -Dm644 "./completions/hcloud-upload-image.zsh" "${pkgdir}/usr/share/zsh/site-functions/_hcloud-upload-image" + install -Dm644 "./completions/hcloud-upload-image.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/hcloud-upload-image.fish" + + snapshot: name_template: "{{ .Version }}-dev+{{ .ShortCommit }}" diff --git a/scripts/completions.sh b/scripts/completions.sh new file mode 100755 index 0000000..1d81d44 --- /dev/null +++ b/scripts/completions.sh @@ -0,0 +1,7 @@ +#!/bin/sh +set -e +rm -rf completions +mkdir completions +for sh in bash zsh fish; do + go run . completion "$sh" >"completions/hcloud-upload-image.$sh" +done