]> Git — Sourcephile - julm/rezine-rfcs.git/blob - scripts/send.sh
scripts: add removeAtExit array
[julm/rezine-rfcs.git] / scripts / send.sh
1 #!/usr/bin/env bash
2 # Usage: scripts/send.sh rfcs/p1
3 # SPDX-FileCopyrightText: 2024 Julien Moutinho (adh14) <julm+rezine@autogeree.net>
4 # SPDX-License-Identifier: AGPL-3.0-or-later
5 # shellcheck disable=SC2046
6 # shellcheck disable=SC2086
7 # shellcheck disable=SC2317
8 set -eux
9 . "${0%/*}"/lib.sh
10 rfcDir=$1; shift
11 test $# -le 0 || declare "$@"
12
13 coverLetter=$(mktemp)
14 removeAtExit+=("$coverLetter")
15 mimepart_mixed=$(uuidgen)
16 mimepart_alternative=$(uuidgen)
17 mimepart_related=$(uuidgen)
18
19 rfcDirMetadata
20 rfcRevision
21 rfcTag
22 #rfcPDF -o "$rfcDir/${rfcRepo}-${rfcTag}".pdf
23
24 git_push_remote=${git_push_remote-origin}
25
26 if test ! "${no_git_send_email:+set}"; then
27 { # coverLetter
28
29 rfcPlain \
30 $(rfcMetadata) \
31 --template "${0%/*}"/../styles/rfc.header.mail \
32 -o -
33
34 cat <<EOF
35 Content-Disposition: inline
36 Mime-Version: 1.0
37 Content-Type: multipart/mixed; boundary="--==_mimepart_mixed_$mimepart_mixed"
38 Content-Transfer-Encoding: UTF-8
39 EOF
40
41 cat <<EOF
42
43 ----==_mimepart_mixed_$mimepart_mixed
44 Content-Type: multipart/alternative; boundary="--==_mimepart_alternative_$mimepart_alternative"
45 Content-Transfer-Encoding: UTF-8
46
47 ----==_mimepart_alternative_$mimepart_alternative
48 Content-Type: text/plain; charset=UTF-8
49 Content-Transfer-Encoding: UTF-8
50
51
52 ::: attention
53 Vous lisez actuellement ce mél dans son format de texte brut,
54 vous _devriez_ le lire dans son format HTML, qui est plus soigné.
55 :::
56
57 EOF
58
59 rfcMarkdown -o -
60 cat <<EOF
61
62 ----==_mimepart_alternative_$mimepart_alternative
63 Content-Type: multipart/related; boundary="--==_mimepart_related_$mimepart_related"
64 Content-Transfer-Encoding: UTF-8
65
66 ----==_mimepart_related_$mimepart_related
67 Content-Type: text/html; charset=UTF-8
68 Content-Transfer-Encoding: UTF-8
69
70 EOF
71 cat "$rfcDir"/index.html
72 cat <<EOF
73 ----==_mimepart_related_$mimepart_related
74
75 ----==_mimepart_alternative_$mimepart_alternative
76
77 EOF
78
79 # FIXME: the PDF rendition is not good
80 #cat <<EOF
81 #----==_mimepart_mixed_$mimepart_mixed
82 #Content-Type: application/pdf; name="RFC$rfcTag.pdf"
83 #Content-Transfer-Encoding: base64
84 #Content-Disposition: attachment; filename*0="RFC$rfcTag."; filename*1=pdf
85 #
86 #EOF
87 #base64 --wrap 76 "$rfcDir/$rfcRepo-$rfcTag".pdf
88
89 cat <<EOF
90
91 ----==_mimepart_mixed_$mimepart_mixed
92 EOF
93
94 } >"$coverLetter"
95
96 patchesDir=$(mktemp -d)
97 removeAtExit+=("$patchesDir")
98 git format-patch "${git_push_remote}/${rfcBranch}..$rfcTag" \
99 --output-directory "$patchesDir" \
100 "$rfcDir" ':!*.html'
101
102 rfcAdvocacyMeta=$(mktemp --suffix ".json")
103 removeAtExit+=("$rfcAdvocacyMeta")
104 pandoc -o "$rfcAdvocacyMeta" --to plain \
105 --template "$rfcRoot"/styles/metadata.json \
106 "$rfcDir"/advocacy.md
107 git send-email ${git_send_email-} \
108 --to "$(jq -r .To <"$rfcAdvocacyMeta" | sed -e '/^null$/d')" \
109 --cc "$(jq -r .Cc <"$rfcAdvocacyMeta" | sed -e '/^null$/d')" \
110 --confirm cc \
111 --8bit-encoding UTF-8 \
112 --cover-letter "$coverLetter" \
113 "$patchesDir"
114 fi
115
116 if test ! "${no_git_push:+set}"; then
117 git push ${git_push-} --follow-tags "$git_push_remote" "$rfcTag"
118 git push ${git_push-} "$git_push_remote" "$(git rev-list "$rfcTag" -1):${rfcBranch}"
119 git push ${git_push-} "$git_push_remote"
120 fi