#!/bin/sh # # BEWARE THIS IS UGLY # # I like this approach because it imports the full documentation for each # setting. However, `mutt -O -D` may be much better suited for your needs. # set -eu FILE="${1:-${0%/*}/confvars}" 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${1:+ $@} # $(cat "$TMPFILE") # vim:sw=12:noet:sts=12:ts=12:ft=muttrc _eof cleanup