You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
1.8 KiB
121 lines
1.8 KiB
#!/bin/sh |
|
|
|
set -eu |
|
|
|
hash cd |
|
hash git |
|
hash gpg |
|
hash mkdir |
|
hash printf |
|
hash python3 |
|
hash rm |
|
hash tar |
|
hash twine |
|
|
|
# Melvin Vermeeren <vermeeren@vermwa.re> |
|
PGP_KEY='8AED 5802 1FEA CDD5 F27B A0E6 A72F 6277 16EA 9D96' |
|
|
|
REPO_WWW='https://github.com/michaeljones/breathe' |
|
|
|
help() |
|
{ |
|
printf 'Usage: %s pack\n' "$0" |
|
printf 'Usage: %s sign\n' "$0" |
|
printf 'Usage: %s upload\n' "$0" |
|
printf 'Usage: %s clean\n' "$0" |
|
return 0 |
|
} |
|
|
|
pack() |
|
( |
|
mkdir -- mkrelease_tmp |
|
|
|
git archive \ |
|
--format=tar.gz \ |
|
--prefix="breathe-$version/" \ |
|
-o "mkrelease_tmp/breathe-$version.tar.gz" \ |
|
-- "v$version" \ |
|
|
|
cd -- mkrelease_tmp |
|
tar -xf "breathe-$version.tar.gz" |
|
|
|
cd -- "breathe-$version" |
|
python3 setup.py sdist bdist_wheel |
|
mv -- dist .. |
|
|
|
cd -- .. |
|
rm -r -- "breathe-$version" |
|
|
|
exit 0 |
|
) |
|
|
|
sign() |
|
( |
|
cd -- mkrelease_tmp |
|
|
|
gpg -bu "$PGP_KEY" -- "breathe-$version.tar.gz" |
|
|
|
for file in dist/*; do |
|
gpg -bau "$PGP_KEY" -- "$file" |
|
done |
|
|
|
exit 0 |
|
) |
|
|
|
upload() |
|
( |
|
cd -- mkrelease_tmp |
|
|
|
twine upload -- dist/* |
|
|
|
{ |
|
printf 'Note: Source tarball signature must be uploaded manually.\n' |
|
printf '\tCreate a new release on GitHub for version: %s\n' "$version" |
|
printf '\tThe source tarball itself must not be uploaded.\n' |
|
printf '\t%s\n' "$REPO_WWW/releases/new?tag=v$version" |
|
} >&2 |
|
|
|
exit 0 |
|
) |
|
|
|
clean() |
|
( |
|
if [ -d mkrelease_tmp ]; then |
|
rm -r -- mkrelease_tmp |
|
fi |
|
|
|
exit 0 |
|
) |
|
|
|
if [ "$#" -eq 0 ]; then |
|
help >&2 |
|
exit 1 |
|
fi |
|
|
|
if [ ! -d .git ]; then |
|
printf 'Error: Not executed from repository root\n' >&2 |
|
exit 1 |
|
fi |
|
|
|
if ! version="$(git describe --tags --exact)"; then |
|
printf 'Error: Cannot retrieve version from git.\n' >&2 |
|
exit 1 |
|
fi |
|
version="${version#v}" |
|
|
|
command="$1" |
|
|
|
case "$command" in |
|
pack|sign|upload|clean) |
|
"$command" |
|
;; |
|
*) |
|
{ |
|
printf 'Error: Unknown command: %s\n' "$command" |
|
printf '\n' |
|
help |
|
} >&2 |
|
exit 1 |
|
esac |
|
|
|
exit 0
|
|
|