logo

dotfiles

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

archive-tags (1482B)


  1. #!/bin/sh
  2. workdir=$(git rev-parse --show-toplevel)
  3. name=$(basename ${workdir})
  4. reldir="${HOME}/Sources/tarballs/${name}/"
  5. get_minisign_pass() {
  6. # `pass show` is broken…
  7. # pass show minisign
  8. # gpg --decrypt ~/.password-store/minisign.gpg 2>/dev/null
  9. hiq -d -Fpassword host=minisign password!
  10. }
  11. get_tag_contents() {
  12. git tag -v \
  13. --format=$'%(contents:subject)%(if)%(contents:body)%(then)\n\n%(contents:body)%(end)' \
  14. "$@"
  15. }
  16. mkdir -p "${reldir}"
  17. minisign-rotate
  18. for tag in $(git tag -l | egrep '^v?[0-9]+\.'); do
  19. version="${tag##v}"
  20. file_base="${reldir}/${name}-$(echo "${version}" | tr '/' '_')"
  21. file="${file_base}.tar.gz"
  22. if test ! -s "${file_base}.txt"
  23. then
  24. get_tag_contents "${tag}" > "${file_base}.txt"
  25. fi
  26. if test ! -f "${file}" && test ! -f "${file}.sign"; then
  27. year=$(git tag -v --format='%(taggerdate:format:%Y)' "$tag")
  28. date_time=$(git tag -v --format='%(taggerdate:iso)' "$tag")
  29. test -f "${file}" || git archive \
  30. --format tar.gz \
  31. --prefix "${name}-${version}/" \
  32. -o "${file}" \
  33. -- \
  34. "${tag}"
  35. touch -d "${date_time}" "${file}"
  36. #test -f "${file}.sig" || gpg --detach-sign "${file}"
  37. test -f "${file}.sign" || get_minisign_pass | signify -S -x "${file}.sign" -s "${HOME}/.minisign/${year}.sec" -m "${file}"
  38. touch -d "${date_time}" "${file}.sign"
  39. set -- "${file}" "${file}.sign"
  40. # Changelog/notes
  41. test -s "${file_base}.txt" && set -- "$@" "${file_base}.txt"
  42. publish-release --subdir="${name}" "$@"
  43. fi
  44. done