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