I wrote together a small patch for creating symlinks in the password
tree. Is this of interest?
-- 
hugo
>From 9d5b8b072e2d600249a531771d558db6fc359155 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= <[email protected]>
Date: Mon, 23 Dec 2019 00:50:20 +0100
Subject: [PATCH] Add ln command.

---
 src/password-store.sh | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/password-store.sh b/src/password-store.sh
index 77f3eda..f9d0d03 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -593,8 +593,8 @@ cmd_delete() {
 }
 
 cmd_copy_move() {
-       local opts move=1 force=0
-       [[ $1 == "copy" ]] && move=0
+       local opts force=0
+       action=$1
        shift
        opts="$($GETOPT -o f -l force -n "$PROGRAM" -- "$@")"
        local err=$?
@@ -623,7 +623,8 @@ cmd_copy_move() {
        [[ ! -t 0 || $force -eq 1 ]] && interactive="-f"
 
        set_git "$new_path"
-       if [[ $move -eq 1 ]]; then
+       case $action in
+       move)
                mv $interactive -v "$old_path" "$new_path" || exit 1
                [[ -e "$new_path" ]] && reencrypt_path "$new_path"
 
@@ -640,11 +641,18 @@ cmd_copy_move() {
                        [[ -n $(git -C "$INNER_GIT_DIR" status --porcelain 
"$old_path") ]] && git_commit "Remove ${1}."
                fi
                rmdir -p "$old_dir" 2>/dev/null
-       else
+               ;;
+       copy)
                cp $interactive -r -v "$old_path" "$new_path" || exit 1
                [[ -e "$new_path" ]] && reencrypt_path "$new_path"
                git_add_file "$new_path" "Copy ${1} to ${2}."
-       fi
+               ;;
+       link)
+               ln -s $interactive -r -v "$old_path" "$new_path" || exit 1
+               # [[ -e "$new_path" ]] && reencrypt_path "$new_path"
+               git_add_file "$new_path" "Symlink ${1} to ${2}."
+               ;;
+       esac
 }
 
 cmd_git() {
@@ -713,6 +721,7 @@ case "$1" in
        delete|rm|remove) shift;        cmd_delete "$@" ;;
        rename|mv) shift;               cmd_copy_move "move" "$@" ;;
        copy|cp) shift;                 cmd_copy_move "copy" "$@" ;;
+       ln) shift;                      cmd_copy_move "link" "$@" ;;
        git) shift;                     cmd_git "$@" ;;
        *)                              cmd_extension_or_show "$@" ;;
 esac
-- 
2.25.0

_______________________________________________
Password-Store mailing list
[email protected]
https://lists.zx2c4.com/mailman/listinfo/password-store

Reply via email to