logo

dotfiles

My dotfiles, one branch per machine, rebased on base git clone https://anongit.hacktivis.me/git/dotfiles.git/

archive-tags (1200B)


  1. #!/bin/sh
  2. reldir="/srv/web/hacktivis.me/releases/"
  3. workdir=$(git rev-parse --show-toplevel)
  4. name=$(basename ${workdir})
  5. get_minisign_pass() {
  6. # `pass show` is broken…
  7. # pass show minisign
  8. gpg --decrypt ~/.password-store/minisign.gpg 2>/dev/null
  9. }
  10. mkdir -p "${workdir}.archives"
  11. minisign-rotate
  12. git tag -l | egrep '^v?[0-9]+\.' | while read -r tag; do
  13. version=$(echo $tag | sed 's/^v//')
  14. file="${workdir}.archives/${name}-$(echo "${version}" | tr '/' '_').tar.gz"
  15. if test ! -f "${file}" && test ! -f "${file}.sign"; then
  16. year=$(git tag -v --format='%(taggerdate:format:%Y)' "$tag")
  17. date_time=$(git tag -v --format='%(taggerdate:iso)' "$tag")
  18. test -f "${file}" || git archive \
  19. --format tar.gz \
  20. --prefix "${name}-${version}/" \
  21. -o "${file}" \
  22. -- \
  23. "${tag}"
  24. touch -d "${date_time}" "${file}"
  25. #test -f "${file}.sig" || gpg --detach-sign "${file}"
  26. test -f "${file}.sign" || get_minisign_pass | signify -S -x "${file}.sign" -s "~/.minisign/${year}.key" -m "${file}"
  27. touch -d "${date_time}" "${file}.sign"
  28. set -- "${file}" "${file}.sign"
  29. # Changelog/notes
  30. test -f "${file}.txt" && set -- "$@" "${file}.txt"
  31. publish-release --subdir=name "$@"
  32. fi
  33. done