zpass: new operation: add

This commit is contained in:
zawz 2020-11-12 00:52:55 +01:00
parent 98ce7db405
commit a365ea2efb
3 changed files with 17 additions and 2 deletions

View file

@ -16,6 +16,7 @@ usage()
get <path...> Get values of targets
copy <path> Copy the target value to clipboard. Shortcut 'x'
set <path> <value> Set the value of target
add <path...> Prompt for input value on paths
new <path...> Generate a random password at target
rm <path...> Delete targets
mv <path...> Move targets

View file

@ -22,6 +22,7 @@ case $arg in
c|create) create ;;
t|tree) _tree "$@" ;;
s|set) _set "$@" ;;
a|add) add "$@" ;;
n|new) new "$@" ;;
g|get) get "$@" ;;
x|copy) copy "$1" ;;

View file

@ -21,6 +21,7 @@ _tree()
# $@ = paths
get()
{
[ $# -lt 1 ] && return 1
__NOPACK=y archive_exec sh -c '
for N
do
@ -42,11 +43,12 @@ copy()
# $@ = path
new()
{
[ $# -lt 1 ] && return 1
archive_exec sh -c "
for N
do
mkdir -p \"\$(dirname \"\$N\")\" || exit $?
{ tr -cd 'a-zA-Z0-9!-.' < /dev/urandom | head -c '$ZPASS_RAND_LEN' && echo; } > \"\$N\" || exit \$?
mkdir -p \"\$(dirname \"\$N\")\" || exit \$?
{ tr -cd 'a-zA-Z0-9!-.' < /dev/urandom | head -c $ZPASS_RAND_LEN && echo; } > \"\$N\" || exit \$?
done
" sh "$@"
}
@ -59,3 +61,14 @@ _set()
shift 1
archive_exec sh -c "mkdir -p '$(dirname "$ref")' && printf '%s\n' '$*' > '$ref'"
}
add()
{
[ $# -lt 1 ] && return 1
archive_exec true # prompt for the key
for N
do
val=$(prompt_password "New value for $N") || return $?
_set "$N" "$val" || return $?
done
}