aboutsummaryrefslogtreecommitdiffstats
path: root/addpass
blob: 6217f2d18416a55c473e8ef50acca3df586b224d (plain) (blame)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/bash

source $HOME/.config/rofi-pass/config

if [[ -n "$2" && "$1" == "--root" ]]; then
    root="${2}"
else
    :
fi

if [[ $1 == "--help" || $1 == "=h" ]]; then
    echo "add pass files for rofi-pass"
    echo "(C) 2015 Rasmus Steinke <rasi at xssn dot at>"
    echo ""
    echo "--root \"foobar\"       Choose the database to use"
    echo "                      Needs to be first option."
    echo "                      Leave empty to use top level)"
    echo ""
    echo "-name \"foobar\"        Needed field - filename of password file"
    echo ""
    echo "                      Every field name has to start with \"-\""
    echo "                      Values should be quoted"
    echo ""
    echo "Example:"
    echo "adduser --root private -user \"Richard\" -foo \"bar\" -autotype \"foo :tab user :tab password\""
    exit
else
    if [[ $* != *"-name "* ]]; then
        echo "Missing -name option. Try --help"
        exit
    fi
fi

echo "Using database \"$root\""

OIFS=$IFS;
IFS="-";

fields="$@";
fieldsArray=($fields);
Name=$(printf '%s\n' "${fieldsArray[@]}" | grep "name " | cut -d ' ' -f 2- | sed -e 's/[[:blank:]]\+$//')
read -p "Enter password for entry \"${Name}\" > " -s pass

cd "${basedir}/${root}"
group=$(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
}

printEntry | pass insert -m "${root}/${group}/${Name}"