summaryrefslogtreecommitdiffstats
path: root/scripts/announce-release.sh
diff options
context:
space:
mode:
authorPatrick McDermott <patrick.mcdermott@libiquity.com>2019-04-10 20:56:00 (EDT)
committer Patrick McDermott <patrick.mcdermott@libiquity.com>2019-04-10 20:56:00 (EDT)
commitec8b1f28fbe914a298a4a2bf18fcd6486c04a1ed (patch)
tree3433bfba12db595bfc19b971bedf940028c4dcac /scripts/announce-release.sh
parent81a652f7eff0d5bd1d97a0ae0319464cff92cf06 (diff)
scripts/announce-release.sh: Update with opkbuild
c3805f3 scripts/announce-release.sh: Lengthen short lines 9c0775b scripts/announce-release.sh: Fix trailing "\" 7b6372d scripts/announce-release.sh: Truuncate long shortlog and diffstat d9ae96f scripts/announce-release.sh: Quote-printable globally 4cf7edf scripts/announce-release.sh: Escape heading lines for quoted-printable 44a9b28 scripts/announce-release.sh: Fix old tag retrieval 3236236 scripts/announce-release.sh: Parameterize from/to info 7bf35fb scripts/announce-release.sh: Sign message 204bc01 scripts/announce-release.sh: Add Message-ID ee6f045 scripts/announce-release.sh: Terminate lines with \r\n 619f64a scripts/announce-release.sh: Move message to var c5457f9 scripts/announce-release.sh: Drop tag format assumption fcdbdbb scripts/announce-release.sh: Update "From" header 7c82eab scripts/announce-release.sh: Update e-mail address and signature
Diffstat (limited to 'scripts/announce-release.sh')
-rwxr-xr-xscripts/announce-release.sh113
1 files changed, 87 insertions, 26 deletions
diff --git a/scripts/announce-release.sh b/scripts/announce-release.sh
index a166378..f27e0cb 100755
--- a/scripts/announce-release.sh
+++ b/scripts/announce-release.sh
@@ -1,10 +1,31 @@
#!/bin/sh
+FROM_NAME='Patrick McDermott'
+FROM_EMAIL='patrick.mcdermott@libiquity.com'
+SIG="$(cat <<-EOF
+ Patrick McDermott, CEO
+ Libiquity
+ Putting customers in control of high-quality technologies
+ http://www.libiquity.com/
+ EOF
+ )"
+KEY='2250 31F0 47FF E516 63ED 516F 1A45 9ECD E4D6 04BE'
+TO_EMAIL='proteanos-dev@lists.proteanos.com'
+
package="${1}"
version="${2}"
package_name="${3}"
srcdir="${0%/scripts/announce-release.sh}"
+heading()
+{
+ local name="${1}"
+ shift 1
+
+ printf '%s\n' "${name}"
+ printf '%s\n' "${name}" | sed 's/./=/g'
+}
+
about="$(sed -n '
H;
${
@@ -26,23 +47,45 @@ news="$(sed -n '
' "${srcdir}/NEWS")"
old_version="$(sed -n "/^${package_name} version /p;" "${srcdir}/NEWS" | \
sed -n "2{ s/^${package_name} version //p; };")"
+old_tag="$(git tag --sort=creatordate | tail -n 2 | head -n 1)"
export GIT_DIR="${srcdir}/.git"
-/usr/sbin/sendmail \
- -f pj+proteanos-ml@pehjota.net proteanos-dev@lists.proteanos.com <<-EOF
- Date: $(LC_ALL='POSIX' date '+%a, %d %b %Y %H:%M:%S %z')
- From: "Patrick 'P. J.' McDermott" <pj+proteanos-ml@pehjota.net>
- To: proteanos-dev@lists.proteanos.com
- Subject: ${package_name} ${version} released
+shortlog="$(git shortlog "${old_tag}..HEAD" | \
+ sed '/^..*$/s/^//')"
+if [ $(printf '%s\n' "${shortlog}" | wc -l) -gt 100 ]; then
+ shortlog="$(git shortlog -s "${old_tag}..HEAD"; cat <<-EOF
+
+ Commit descriptions suppressed for brevity. To see a log summary with
+ descriptions, run:
+
+ \$ git shortlog ${old_tag}..${package}/${version}
+ EOF
+ )"
+fi
+diffstat="$(git diff --stat=72 --color=never --find-renames=50% \
+ "${old_tag}..HEAD")"
+if [ $(printf '%s\n' "${diffstat}" | wc -l) -gt 50 ]; then
+ diffstat="$(printf '%s\n' "${diffstat}" | tail -n 1; cat <<-EOF
+
+ Difference statistics truncated for brevity. To see full statistics,
+ run:
+
+ \$ git diff --stat --find-renames=50% \\
+ > ${old_tag}..${package}/${version}
+ EOF
+ )"
+fi
- About
- =====
+message="$({ cat | sed 's/=/=3D/g; s/ $/=20/; s/\t$/=09/;'; } <<-EOF
+ Content-Type: text/plain; charset=UTF-8
+ Content-Transfer-Encoding: quoted-printable
+
+ $(heading 'About')
${about}
- Downloading
- ===========
+ $(heading 'Downloading')
Source archives are available from the files site by HTTP or FTP:
@@ -64,27 +107,45 @@ export GIT_DIR="${srcdir}/.git"
This release is marked by the "${package}/${version}" tag.
- NEWS for Version ${version}
- =================$(printf '%s\n' "${version}" | sed 's/./=/g')
+ $(heading "NEWS for Version ${version}")
${news}
- Shortlog of Changes Since Version ${old_version}
- ==================================$(printf '%s\n' "${old_version}" | \
- sed 's/./=/g')
+ $(heading "Shortlog of Changes Since Version ${old_version}")
+
+ ${shortlog}
+
+ $(heading "Diffstat of Changes Since Version ${old_version}")
+
+ ${diffstat}
+
+ --
+ ${SIG}
+ EOF
+ )"
+
+{ sed 's/$/\r/' | /usr/sbin/sendmail -f "${FROM_EMAIL}" \
+ "${TO_EMAIL}"; } <<-EOF
+ Date: $(LC_ALL='POSIX' date '+%a, %d %b %Y %H:%M:%S %z')
+ From: ${FROM_NAME} <${FROM_EMAIL}>
+ To: ${TO_EMAIL}
+ Subject: ${package_name} ${version} released
+ Message-ID: $(LC_ALL='POSIX' date \
+ '+%Y%m%d%H%M%S').${FROM_EMAIL}
+ MIME-Version: 1.0
+ Content-Type: multipart/signed; micalg=pgp-sha256; boundary="=-=-=";
+ protocol="application/pgp-signature"
- $(git shortlog "${package}/${old_version}..HEAD" | \
- sed '/^..*$/s/^/ /')
+ --=-=-=
+ ${message}
- Diffstat of Changes Since Version ${old_version}
- ==================================$(printf '%s\n' "${old_version}" | \
- sed 's/./=/g')
+ --=-=-=
+ Content-Type: application/pgp-signature
+ Content-Description: OpenPGP digital signature
- $(git diff --stat=69 --color=never --find-renames=50% \
- "${package}/${old_version}..HEAD" | sed 's/^/ /')
+ $(printf '%s\n' "${message}" | sed 's/$/\r/' | \
+ gpg --local-user "${KEY}" --armor --output - \
+ --digest-algo SHA256 --detach-sign)
- -- $(: Just something to follow the trailing space)
- Patrick "P. J." McDermott: http://www.pehjota.net/
- Lead Developer, ProteanOS: http://www.proteanos.com/
- Founder and CEO, Libiquity: http://www.libiquity.com/
+ --=-=-=--
EOF