Another copy of my dotfiles. Because I don't completely trust GitHub.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

81 lines
1.6 KiB

#!/bin/sh
skey="$(bw unlock --raw)"
export BW_SESSION="$skey"
data="$(bw list items | jq -r -M \
'.[]| select( .type | contains(1)) |.name,.folderId,(.login|.username,.password,.totp,(.uris|.[0]|.uri))')"
echo "Fetched passwords from bitwarden."
uri=""
password=""
name=""
username=""
totp=""
fid=""
echo "Cleaning previuos store"
prev=$(pwd)
cd $PASSWORD_STORE_DIR
for f in *; do
pass rm -rf "$f"
done
cd $prev
strip_domain(){
if [ "$1" = "null" ]; then
echo "null"
return 0
fi
echo "$1" | head -n 1 | sed 's~http[s]*://~~g' | cut -d"/" -f 1
}
get_folder(){
if [ "$1" = "null" ]; then
echo "No Folder"
return 0
fi
bw get folder "$1" | jq -r -M ".name"
}
IFS="
"
for l in $data; do
if [ "$name" = "" ]; then
name=$l
echo "$name"
elif [ "$fid" = "" ]; then
fid=$l
elif [ "$username" = "" ]; then
username=$l
elif [ "$password" = "" ]; then
password=$l
elif [ "$totp" = "" ]; then
totp=$l
elif [ "$uri" = "" ]; then
uri=$(strip_domain $l)
folder=$(get_folder $fid)
if [ "$uri" = "null" ]; then
echo "$password" | pass insert -f -e "$folder/$name/$username" 2> /dev/null > /dev/null
if [ ! "$totp" = "null" ]; then
echo "$totp" | pass otp append -f -e "$folder/$name/$username" > /dev/null 2> /dev/null
fi
else
echo "$password" | pass insert -f -e "$folder/$uri/$username" 2> /dev/null > /dev/null
if [ ! "$totp" = "null" ]; then
echo "$totp" | pass otp append -f -e "$folder/$uri/$username" > /dev/null 2> /dev/null
fi
fi
uri=""
fid=""
password=""
name=""
username=""
totp=""
fi
done