small pixel drawing of a pufferfish pa

contrib/pa-pass

#!/bin/sh
#
# migrate passwords from pass to pa
#
# password dir of pass: export PASSWORD_STORE_DIR=~/.password-store
# password dir of pa:   export PA_DIR=~/.local/share/pa/passwords

: "${PASSWORD_STORE_DIR:=$HOME/.password-store}"
: "${PA_DIR:=${XDG_DATA_HOME:-$HOME/.local/share}/pa}"

# Create pa store if it doesn't exist.
pa l >/dev/null || exit

age=$(command -v age || command -v rage)

find "$PASSWORD_STORE_DIR" -name '*.gpg' | while read -r passfile; do
    name=$(printf %s "${passfile#"$PASSWORD_STORE_DIR/"}" | sed 's/\.gpg$//')
    mkdir -p "$PA_DIR/passwords/$(dirname "./$name")"
    gpg2 -d "$passfile" |
        $age -R "$PA_DIR/recipients" -o "$PA_DIR/passwords/$name.age" &&
        printf '%s\n' "saved '$name' to the store."
done

if [ -z "${PA_NOGIT+x}" ] && command -v git >/dev/null 2>&1; then
    git -C "$PA_DIR/passwords" add .
    git -C "$PA_DIR/passwords" commit -m "migrate from pass"
fi