mutt: add some patch cmds

This commit is contained in:
Mathieu Maret 2021-11-22 14:13:25 +01:00
parent c37cd39404
commit d0cbe54bb6
4 changed files with 145 additions and 8 deletions

36
.mutt/bin/patch_apply.sh Executable file
View File

@ -0,0 +1,36 @@
#!/usr/bin/env bash
# store patch
file="$(mktemp ${TMPDIR-/tmp}/mutt-patch-apply-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
#
## go!
#clear
#cd $HOME/projects/$project
project=$(pwd)
branch=$(git rev-parse --abbrev-ref HEAD)
clear
echo "#"
echo "# try applying patch to $project, branch $branch"
echo "#"
if git am --message-id --3way --ignore-whitespace --whitespace=fix "$file"; then
echo "#"
echo "# OK"
echo "#"
else
echo "# FAILED, cleaning up"
cp -v .git/rebase-apply/patch patch-apply-failed.diff
cp -v "$file" patch-apply-failed.mail
git am --abort
git reset --hard
fi

15
.mutt/bin/patch_find_project.sh Executable file
View File

@ -0,0 +1,15 @@
#!/usr/bin/env bash
#!/bin/sh
if test "$PATCH_PROJECT" != ""; then
project="$PATCH_PROJECT"
elif grep -q -e "devel@edk2.groups.io" "$file"; then
project="edk2"
elif grep -q -e "qemu-devel@nongnu.org" "$file"; then
project="qemu"
# [ ... more checks snipped ... ]
fi
if test "$project" = ""; then
echo "Can't figure project automatically."
echo "Use env var PATCH_PROJECT to specify path."
fi

75
.mutt/bin/patch_lore.sh Executable file
View File

@ -0,0 +1,75 @@
#!/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

27
.muttrc
View File

@ -30,12 +30,18 @@ unset metoo
## ACCOUNT
# GMAIL
set folder= imaps://imap.gmail.com:993
set spoolfile= +INBOX #or +[Gmail]/Important
set postponed= +[Gmail]/Drafts
set imap_user = 'mathieu.maret@gmail.com'
#set imap_pass = 'yourpass'
#set folder= imaps://imap.gmail.com:99
#set postponed= +[Gmail]/Drafts
#set imap_user = 'mathieu.maret@gmail.com'
# Mathux
set folder= imap://mathux.org:143
set postponed= +Drafts #[Gmail]/Drafts
set imap_user = 'mathieu'
set ssl_starttls=yes
set spoolfile= +INBOX #or +[Gmail]/Important
#set imap_pass = 'yourpass'
#set record="imaps://imap.gmail.com/[Gmail]/Sent Mail"
unset record
set maildir_trash = yes
@ -47,7 +53,8 @@ set certificate_file=~/.mutt/certificates
set imap_check_subscribed="yes"
set imap_list_subscribed="yes"
mailboxes !
set smtp_url = smtp://mathieu.maret@smtp.gmail.com:587/
#set smtp_url = smtp://mathieu.maret@smtp.gmail.com:587/
set smtp_url = smtp://mathieu@mathux.org:587/
## VIEW MAIL
set smileys="(>From)|(:[-^]?[][)(><}{|/DP])"
@ -59,7 +66,8 @@ set pager_stop # "next_page" won't jump to next message at end of messages
set edit_headers
set attribution="%n wrote:" # attribution format : on day, name wrote (alias=%a if you want to add that)
set indent_string="> "
set from="Mathieu Maret <mathieu.maret@gmail.com>"
#set from="Mathieu Maret <mathieu.maret@gmail.com>"
set from="Mathieu Maret <mathieu@mathux.org>"
## INDEX
set index_format="%4C %Z [%D] %-15.15n %s"
@ -120,4 +128,7 @@ source $alias_file
#macro index,pager a "<pipe-message>abook --add-email-quiet<return>" "Add this sender to Abook"
#bind editor <Tab> complete-query
#
#
bind index,pager p noop # default: print
macro index,pager pp print
macro index,pager pa "<pipe-entry>~/.mutt/bin/patch_apply.sh<enter>"
macro index,pager pl "<pipe-entry>~/.mutt/bin/patch_lore.sh<enter>"