28 lines
681 B
Plaintext
28 lines
681 B
Plaintext
|
#!/bin/sh
|
||
|
set -euf
|
||
|
|
||
|
PASSAGE_DIR="${PASSAGE_DIR:-$HOME/.passage/store}"
|
||
|
PASSAGE_IDENTITIES_FILE="${PASSAGE_IDENTITIES_FILE:-$HOME/.passage/identities}"
|
||
|
PASSAGE_ROOT="${PASSAGE_DIR%/*}"
|
||
|
STORE_LOCK="$PASSAGE_ROOT/store.tar.age"
|
||
|
|
||
|
lock() {
|
||
|
[ -d "$PASSAGE_DIR" ] && agetar -e -R "$PASSAGE_DIR/.age-recipients" -o "$STORE_LOCK" "$PASSAGE_DIR" && rm -rf "$PASSAGE_DIR"
|
||
|
}
|
||
|
|
||
|
unlock() {
|
||
|
[ -f "$STORE_LOCK" ] && agetar -d -i "$PASSAGE_ROOT/identities" -o "$PASSAGE_ROOT" "$STORE_LOCK" && rm -rf "$STORE_LOCK"
|
||
|
}
|
||
|
|
||
|
while getopts :lu OPT; do
|
||
|
case "$OPT" in
|
||
|
l) lock ;;
|
||
|
u) unlock ;;
|
||
|
*) exit 1 ;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
[ -d "$PASSAGE_DIR" ] && STATE=UNLOCKED
|
||
|
|
||
|
echo "Password store is ${STATE:-LOCKED}"
|