76 lines
1.5 KiB
Bash
76 lines
1.5 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
# store patch
|
||
|
file="$(mktemp ${TMPDIR-/tmp}/mutt-patch-queue-XXXXXXXX)"
|
||
|
trap "rm -f $file" EXIT
|
||
|
cat > "$file"
|
||
|
|
||
|
# find project
|
||
|
source ~/.mutt/bin/patch-find-project.sh
|
||
|
if test "$project" = ""; then
|
||
|
echo "ERROR: can't figure project"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# find msgid
|
||
|
msgid=$(grep -i -e "^message-id:" "$file" | head -n 1 \
|
||
|
| sed -e 's/.*<//' -e 's/>.*//')
|
||
|
|
||
|
# go!
|
||
|
clear
|
||
|
cd $HOME/projects/$project
|
||
|
branch=$(git rev-parse --abbrev-ref HEAD)
|
||
|
|
||
|
clear
|
||
|
echo "#"
|
||
|
echo "# try queuing patch (series) for $project, branch $branch"
|
||
|
echo "#"
|
||
|
echo "# msgid: $msgid"
|
||
|
echo "#"
|
||
|
|
||
|
# create work dir
|
||
|
WORK="${TMPDIR-/tmp}/${0##*/}-$$"
|
||
|
mkdir "$WORK" || exit 1
|
||
|
trap 'rm -rf $file "$WORK"' EXIT
|
||
|
|
||
|
echo "# fetching from lore ..."
|
||
|
echo "#"
|
||
|
b4 am --outdir "$WORK" \
|
||
|
--apply-cover-trailers \
|
||
|
--sloppy-trailers \
|
||
|
$msgid || exit 1
|
||
|
|
||
|
count=$(ls $WORK/*.mbx 2>/dev/null | wc -l)
|
||
|
if test "$count" = "0"; then
|
||
|
echo "#"
|
||
|
echo "# got nothing, trying notmuch instead ..."
|
||
|
echo "#"
|
||
|
echo "# update db ..."
|
||
|
notmuch new
|
||
|
echo "# find thread ..."
|
||
|
notmuch show \
|
||
|
--format=mbox \
|
||
|
--entire-thread=true \
|
||
|
id:$msgid > $WORK/notmuch.thread
|
||
|
echo "# process mails ..."
|
||
|
b4 am --outdir "$WORK" \
|
||
|
--apply-cover-trailers \
|
||
|
--sloppy-trailers \
|
||
|
--use-local-mbox $WORK/notmuch.thread \
|
||
|
$msgid || exit 1
|
||
|
count=$(ls $WORK/*.mbx 2>/dev/null | wc -l)
|
||
|
fi
|
||
|
|
||
|
echo "#"
|
||
|
echo "# got $count patches, trying to apply ..."
|
||
|
echo "#"
|
||
|
if git am -m -3 $WORK/*.mbx; then
|
||
|
echo "#"
|
||
|
echo "# OK"
|
||
|
echo "#"
|
||
|
else
|
||
|
echo "# FAILED, cleaning up"
|
||
|
git am --abort
|
||
|
git reset --hard
|
||
|
fi
|