X-Git-Url: https://git.madduck.net/etc/mutt.git/blobdiff_plain/15949d808675581d0d7087870b7d6b3701807bd9..a5ab5741acbc36d8f5d8a527639edaad4143f2f8:/.mutt/mkconf diff --git a/.mutt/mkconf b/.mutt/mkconf new file mode 100755 index 0000000..c16c254 --- /dev/null +++ b/.mutt/mkconf @@ -0,0 +1,70 @@ +#!/bin/sh +set -eu + +FILE="${1:-}" +TARGET="${2:-}" + +if [ ! -f "$FILE" ]; then + echo >&2 "E: File $FILE does not exist" + exit 1 +fi + +if [ -z "$TARGET" ]; then + TARGET="$FILE" +fi + +TMPFILE="$(mktemp -t vit.XXXXXXXX)" +cleanup() { rm -f "$TMPFILE"; trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15; } +trap cleanup 1 2 3 4 5 6 7 8 10 11 12 13 14 15 + +process_stanza() { + echo "$2" + local opt setting trailer + opt="$(sed -ne "/^set ${1}=/,/# 3\./p" $FILE)" + if [ -n "$opt" ]; then + opt="${opt% +*}" + setting="${opt%% +*}" + echo >&2 "Importing setting: $setting …" + echo "$setting" + echo "$opt" | grep '^#' || : + fi + echo + echo +} + +option= +{ zcat /usr/share/doc/mutt/manual.txt.gz | \ + sed -e '1,/^3\. Configuration Variables$/d;1d;/^4\./,$d' -e 's, , ,g'; + echo END; } | \ + +while read first rest; do + line="$first ${rest%% }" + case "$first" in + (3.[0-9]*|END) + [ -z "$option" ] || \ + process_stanza "$option" "${stanza}" + stanza="# $line" + option="$rest" + ;; + ('') + stanza="${stanza:+$stanza\n}#$line" + ;; + (*) + stanza="${stanza:+$stanza\n}# $line" + ;; + esac + +done > $TMPFILE + +cat <<_eof > "$TARGET" +# Auto-generated using mkconf from manual.txt +# on $(date +'%Y-%m-%d %H:%M:%S') +# +# Invoked as: $0 $@ +# + +$(cat "$TMPFILE") +_eof +cleanup