release 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/bash
  2. set -e
  3. projects_token=${1:-}
  4. github_token=${2:-}
  5. if [[ -z $github_token ]]; then
  6. echo "Usage: $0 [projects-token] [github-token]"
  7. exit 1
  8. fi
  9. if [[ ! -f NEWS ]]; then
  10. echo "Missing NEWS file. Try running from root of repository."
  11. exit 1
  12. fi
  13. version=$(head --lines=1 NEWS)
  14. if [[ $version =~ .*dev* ]]; then
  15. echo "Refusing to release a dev version: $version"
  16. exit 1
  17. fi
  18. git tag $version
  19. git push origin $version
  20. git push github $version
  21. # Build borgmatic and publish to pypi.
  22. rm -fr dist
  23. python3 setup.py bdist_wheel
  24. python3 setup.py sdist
  25. gpg --detach-sign --armor dist/borgmatic-*.tar.gz
  26. gpg --detach-sign --armor dist/borgmatic-*-py3-none-any.whl
  27. twine upload -r pypi --username __token__ dist/borgmatic-*.tar.gz dist/borgmatic-*.tar.gz.asc
  28. twine upload -r pypi --username __token__ dist/borgmatic-*-py3-none-any.whl dist/borgmatic-*-py3-none-any.whl.asc
  29. # Set release changelogs on projects.torsion.org and GitHub.
  30. release_changelog="$(cat NEWS | sed '/^$/q' | grep -v '^\S')"
  31. escaped_release_changelog="$(echo "$release_changelog" | sed -z 's/\n/\\n/g' | sed -z 's/\"/\\"/g')"
  32. curl --silent --request POST \
  33. "https://projects.torsion.org/api/v1/repos/borgmatic-collective/borgmatic/releases" \
  34. --header "Authorization: token $projects_token" \
  35. --header "Accept: application/json" \
  36. --header "Content-Type: application/json" \
  37. --data "{\"body\": \"$escaped_release_changelog\", \"draft\": false, \"name\": \"borgmatic $version\", \"prerelease\": false, \"tag_name\": \"$version\"}"
  38. github-release create --token="$github_token" --owner=witten --repo=borgmatic --tag="$version" \
  39. --name="borgmatic $version" --body="$release_changelog"