#!/bin/bash source $HOME/.config/rofi-pass/config if [[ -n "$3" && "$2" == "--root" ]]; then root="${2}" elif [[ -n $root ]]; then root=$root elif [[ -n $PASSWORD_STORE_DIR ]]; then root=$PASSWORD_STORE_DIR else root="$HOME/.password-store" fi if [[ $1 == "--help" || $1 == "=h" ]]; then echo "add pass files for rofi-pass" echo "(C) 2015 Rasmus Steinke " echo "" echo "--name \"foobar\" Mandatory first argument - filename of password file" echo "--root \"foobar\" Optional second argument - Absolute path to password store" echo "" echo "+FIELD \"barbaz\" Every field name has to start with \"+\"" echo " Values should be quoted" echo "" echo "Example:" echo "addpass --name \"my password file\" --root \"$HOME/passwords\" +user \"Richard\" +foo \"bar\" +autotype \"foo :tab user :tab pass\"" exit else echo "$1" if [[ $1 != "--name" ]]; then echo "Missing --name option. Try --help" exit elif [[ $1 == "--name" ]]; then Name="$2" fi fi echo "Using database \"$root\"" OIFS=$IFS; IFS="+"; fields="$@"; fieldsArray=($fields); read -p "Enter password for entry \"${Name}\" > " -s pass cd "${root}" group=$(echo -e "No Group\n---\n$(find -type d -not -iwholename '*.git*' -printf '%d\t%P\n' | sort -r -nk1 | cut -f2-)" | rofi -dmenu -p "Choose Group > ") echo -e "\n\nStoring file ${Name} in group ${group}" printEntry () { echo -e "$pass\n---" for ((i=1; i<${#fieldsArray[@]}; ++i)); do field=$(echo "${fieldsArray[$i]}" | awk -F' ' '{print $1}') option=$(echo "${fieldsArray[$i]}" | cut -d ' ' -f 2- | sed -e 's/[[:blank:]]\+$//') echo "$field: $option" | grep -Ev 'name:|--root|root:|^:' #${fieldsArray[$i]}"; done } if [[ "$group" == "No Group" ]]; then printEntry | PASSWORD_STORE_DIR="${root}" pass insert -m "${Name}" elif [[ "$group" == "" ]]; then exit else printEntry | PASSWORD_STORE_DIR="${root}" pass insert -m "${group}/${Name}" fi