chiark / gitweb /
tg mail: Simplify array usage
[topgit.git] / tg-mail.sh
1 #!/bin/sh
2 # TopGit - A different patch queue manager
3 # GPLv2
4
5 name=
6
7
8 ## Parse options
9
10 while [ -n "$1" ]; do
11         arg="$1"; shift
12         case "$arg" in
13         -*)
14                 echo "Usage: tg [...] mail [NAME]" >&2
15                 exit 1;;
16         *)
17                 [ -z "$name" ] || die "name already specified ($name)"
18                 name="$arg";;
19         esac
20 done
21
22 [ -n "$name" ] || name="$(git symbolic-ref HEAD | sed 's#^refs/heads/##')"
23 base_rev="$(git rev-parse --short --verify "refs/top-bases/$name" 2>/dev/null)" ||
24         die "not a TopGit-controlled branch"
25
26
27 patchfile="$(mktemp -t tg-mail.XXXXXX)"
28
29 $tg patch $name >"$patchfile"
30
31 hlines=$(grep -n -m 1 '^---' "$patchfile" | sed 's/:---//')
32 header=$(head -n $(($hlines - 1)) "$patchfile")
33
34
35
36 from="$(echo "$header" | grep '^From:' | sed 's/From:\s*//')"
37 to="$(echo "$header" | grep '^To:' | sed 's/To:\s*//')"
38
39
40 # XXX: I can't get quoting right without arrays
41 people=()
42 [ -n "$from" ] && people=("${people[@]}" --from "$from")
43 # FIXME: there could be multimple To
44 [ -n "$to" ]   && people=("${people[@]}" --to "$to")
45
46
47 # NOTE: git-send-email handles cc itself
48 git send-email "${people[@]}" "$patchfile"
49
50 rm "$patchfile"