diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..ca60b9e --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,54 @@ +# vim: set ts=2 sw=2 tw=0 fo=cnqoj + +version: 2 + +gitea_urls: + api: https://codeberg.org/api/v1 + download: https://codeberg.org + +builds: + - builder: prebuilt + goos: + - linux + goarch: + - amd64 + goamd64: + - v1 + prebuilt: + path: output/mybin_{{ .Os }}_{{ .Arch }}{{ with .Amd64 }}_{{ . }}{{ end }}/mybin + binary: bin/mybin + +archives: + - formats: [binary] + name_template: >- + {{ .ProjectName }}_ + {{- title .Os }}_ + {{- if eq .Arch "amd64" }}x86_64 + {{- else if eq .Arch "386" }}i386 + {{- else }}{{ .Arch }}{{ end }} + {{- if .Arm }}v{{ .Arm }}{{ end }}_{{ .Tag }} + wrap_in_directory: true + +changelog: + sort: asc + filters: + exclude: + - "^docs:" + - "^test:" + groups: + - title: Improved + regexp: '^.*?(feat|add|new)(\([[:word:]]+\))??!?:.+$' + order: 0 + - title: Fixed + regexp: '^.*?(bug|fix)(\([[:word:]]+\))??!?:.+$' + order: 1 + - title: Changed + order: 999 + +release: + header: "# Release Notes" + footer: >- + + --- + + Full Changelog: [{{ .PreviousTag }}...{{ .Tag }}](https://codeberg.org/scip/diceware/compare/{{ .PreviousTag }}...{{ .Tag }}) diff --git a/.woodpecker/release.sh b/.woodpecker/release.sh new file mode 100755 index 0000000..1081660 --- /dev/null +++ b/.woodpecker/release.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# This is my own simple codeberg generic releaser. It takes to +# binaries to be uploaded as arguments and takes every other args from +# env. Works on tags or normal commits (push), tags must start with v. + + +set -e + +die() { + echo $* + exit 1 +} + +if test -z "$DEPLOY_TOKEN"; then + die "token DEPLOY_TOKEN not set" +fi + +git fetch --all + +# determine current tag or commit hash +version="$CI_COMMIT_TAG" +previous="" +log="" +if test -z "$version"; then + version="${CI_COMMIT_SHA:0:6}" + log=$(git log -1 --oneline) +else + previous=$(git tag -l | grep -E "^v" | tac | grep -A1 "$version" | tail -1) + log=$(git log -1 --oneline "${previous}..${version}" | sed 's|^|- |g') +fi + +# release body +printf "# Changes\n\n %s\n" "$log" > body.txt + +# create the release +https --ignore-stdin --check-status -b -A bearer -a "$DEPLOY_TOKEN" POST \ + "https://codeberg.org/api/v1/repos/${CI_REPO_OWNER}/${CI_REPO_NAME}/releases" \ + tag_name="$version" name="Release $version" body=@body.txt > release.json + +# we need the id to upload files +ID=$(jq -r .id < release.json) + +if test -z "$ID"; then + cat release.json + die "failed to create release" +fi + +# actually upload +for file in "$@"; do + https --ignore-stdin --check-status -A bearer -a "$DEPLOY_TOKEN" -f POST \ + "https://codeberg.org/api/v1/repos/${CI_REPO_OWNER}/${CI_REPO_NAME}/releases/$ID/assets" \ + "name=${file}-${version}" "attachment@${file}" +done diff --git a/.woodpecker/release.yaml b/.woodpecker/release.yaml new file mode 100644 index 0000000..8c6dea7 --- /dev/null +++ b/.woodpecker/release.yaml @@ -0,0 +1,28 @@ +# build release + +labels: + platform: linux/amd64 + +steps: + compile: + when: + event: [tag,manual] + image: alpine:latest + commands: + - apk update + - apk add --no-cache bash build-base + - make static + - file dicepwgen_static + - mv dicepwgen_static dicepwgen-linux-amd64 + + release: + image: alpine:latest + when: + event: [tag,manual] + environment: + DEPLOY_TOKEN: + from_secret: DEPLOY_TOKEN + commands: + - apk update + - apk add --no-cache bash httpie jq git + - .woodpecker/release.sh dicepwgen-linux-amd64 diff --git a/Makefile b/Makefile index 6b7bfd2..67fb0ec 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,7 @@ CFLAGS = -Wall -Wextra -Werror -O1 -g LDFLAGS = OBJS = dicepwgen.o dictfile.o tossing.o debug.o DST = dicepwgen +STATIC = dicepwgen_static PREFIX = /usr/local UID = root GID = 0 @@ -35,6 +36,13 @@ all: $(DST) $(DST): $(OBJS) gcc -DDICTFILE=$(DICTFILE) $(OBJS) -o $(DST) +static: $(STATIC) + +$(STATIC): $(OBJS) + gcc -DDICTFILE=$(DICTFILE) -static $(OBJS) -o $(STATIC) + + + %.o: %.c gcc -c $(CFLAGS) -DDICTFILE=$(DICTFILE) $*.c -o $*.o