1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/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}"
basedir=${XDG_DATA_HOME:=$HOME/.local/share}/pa
: "${PA_DIR:=$basedir/passwords}"
# 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/$(dirname "./$name")"
gpg2 -d "$passfile" |
$age -R "$basedir/recipients" -o "$PA_DIR/$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" add . && git -C "$PA_DIR" commit -m "migrate from pass"
fi