59 lines
1.2 KiB
Bash
59 lines
1.2 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
set -u
|
||
|
if [ -z "$EDITOR" ]; then echo "polmake: No EDITOR set in environment. Please set one :)" 1>&2; exit 1; fi
|
||
|
ext=".yaml"
|
||
|
|
||
|
newfile () {
|
||
|
local prev_mask="$(umask)"
|
||
|
umask 0077
|
||
|
local file="$(mktemp --suffix "$ext")"
|
||
|
umask "$prev_mask"
|
||
|
echo "$file"
|
||
|
}
|
||
|
|
||
|
extswap () {
|
||
|
local text="$(cat < /dev/stdin)"
|
||
|
if [ "$ext" == ".yaml" ]; then
|
||
|
echo "$text" | yq .
|
||
|
elif [ "$ext" == ".json" ]; then
|
||
|
echo "$text"
|
||
|
else
|
||
|
echo "polmake: Unsure how to process extension typeof \"$ext\"." 1>&2
|
||
|
exit 1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
file="$(newfile)"
|
||
|
while :; do
|
||
|
set +u
|
||
|
$EDITOR "$file"
|
||
|
set -u
|
||
|
|
||
|
json="$(cat "$file")"
|
||
|
code="$?"
|
||
|
if [ "$code" != 0 ]; then exit 0; fi
|
||
|
if [ -z "$json" ]; then exit 0; fi
|
||
|
json="$(echo "$json" | extswap)"
|
||
|
echo "$json
|
||
|
|
||
|
Type EDIT to open the editor
|
||
|
Type SIGN to sign this policy
|
||
|
Type QUIT to cancel"
|
||
|
read -p "> " cmd
|
||
|
if [ "$cmd" == "EDIT" ] || [ "$cmd" == "edit" ] || [ "$cmd" == "e" ]; then
|
||
|
continue
|
||
|
elif [ "$cmd" == "SIGN" ] || [ "$cmd" == "sign" ] || [ "$cmd" == "s" ]; then
|
||
|
rm "$file"
|
||
|
read -p "gpgid> " gpgid
|
||
|
./polsign.sh "$gpgid" <<< "$json"
|
||
|
break
|
||
|
else
|
||
|
rm "$file"
|
||
|
break
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
|
||
|
|
||
|
|