diff --git a/.woodpecker.yml b/.woodpecker.yml
index 0adf009..60e18dc 100644
--- a/.woodpecker.yml
+++ b/.woodpecker.yml
@@ -3,3 +3,76 @@ pipeline:
image: bats/bats
commands:
- /opt/bats/bin/bats test
+
+ release-prep: # prepare changelog and version information for release candidate
+ when:
+ event: tag
+ tag: v*
+ image: alpine
+ commands:
+ - sed -ne 's/bm_version=\(.*\)/\1/p' bemoji > NEWEST_VERSION.txt
+ - awk '/^## \[\d/{p++} p==2{print; exit} p>=1' CHANGELOG.md | head -n -1 | tail -n+3 > NEWEST_CHANGES.txt
+
+ versioncompare: # ensure we correctly bumped versions
+ when:
+ event: tag
+ tag: v*
+ image: alpine
+ secrets: [ github_release_token, github_repo ]
+ commands:
+ - apk add jq curl
+ - "lastversion=$(curl -X GET -H \"Accept: application/vnd.github.v3+json\" -H \"Authorization: Bearer $GITHUB_RELEASE_TOKEN\" https://api.github.com/repos/$GITHUB_REPO/releases/latest | jq -r '.name')"
+ - "programversion=$(cat NEWEST_VERSION.txt)"
+ - changelogversion=$(sed -ne 's/^## \[\([0-9].*\)\].*$/\1/p' CHANGELOG.md | head -n1)
+ - echo "Last version - $lastversion"
+ - echo "New version - $programversion"
+ - echo "Changelog version - $changelogversion"
+ - "if [ \"$changelogversion\" != \"$programversion\" ]; then { echo \"VERSION MISMATCH: Changelog - $changelogversion, Program - $programversion\" && exit 1; }; fi"
+ - "if [ \"$lastversion\" = \"$programversion\" ]; then { echo \"RELEASE DUPLICATE: Last release already had version - $programversion\" && exit 1; }; fi"
+
+ build:
+ when:
+ event: tag
+ tag: v*
+ image: savant/md2man
+ commands:
+ - apk update && apk add zip
+ - BM_VERSION=$(cat NEWEST_VERSION.txt)
+ - mkdir -p build/doc dist
+ - cp bemoji build
+ - md2man -in README.md -out bemoji.1 && gzip bemoji.1
+ - cp LICENSE README.md bemoji.1.gz build/doc
+ - tar -czvf bemoji-$BM_VERSION.tar.gz build/*
+ - zip -r bemoji-$BM_VERSION.zip build/*
+ - mv bemoji-$BM_VERSION.tar.gz bemoji-$BM_VERSION.zip dist
+
+ release-gitea:
+ group: release
+ when:
+ event: tag
+ tag: v*
+ image: plugins/gitea-release
+ settings:
+ api_key:
+ from_secret: gitea_release_token
+ base_url: https://git.martyoeh.me
+ files: dist/*
+ title: NEWEST_VERSION.txt
+ note: NEWEST_CHANGES.txt
+
+ release-github:
+ when:
+ event: tag
+ tag: v*
+ image: alpine
+ secrets: [ github_release_token, github_repo ]
+ commands:
+ - apk add file jq curl
+ - BM_VERSION=$(cat NEWEST_VERSION.txt)
+ - BM_CHANGED=$(sed -e 's|#||g' -e 's|^.*$|\0
|' NEWEST_CHANGES.txt) # display newlines workaround
+ - echo "{\"tag_name\":\"$BM_VERSION\",\"target_commitish\":\"main\",\"name\":\"$BM_VERSION\",\"body\":\"$BM_CHANGED\",\"draft\":false,\"prerelease\":false,\"generate_release_notes\":false}" > data.json
+ - "response=$(curl -X POST -H \"Accept:\\ application/vnd.github+json\" -H \"Authorization:\\ Bearer $GITHUB_RELEASE_TOKEN\" https://api.github.com/repos/$GITHUB_REPO/releases -d \"@data.json\")"
+ - "uploadurl=$(echo $response | jq -r '.upload_url' | cut -d'{' -f1)"
+ - "[ $uploadurl = null ] && { echo $response; exit 1; }"
+ - "curl -X POST -H \"Accept:\\ application/vnd.github.v3+json\" -H \"Authorization:\\ Bearer $GITHUB_RELEASE_TOKEN\" -H \"Content-Type:\\ $(file -b --mime-type dist/bemoji-$BM_VERSION.zip)\" -H \"Content-Length:\\ $(wc -c