Hola,

This patch allows p-s to function on OpenBSD using native cp, rm, mv,
grep and mkdir. It does this by exposing command flags that can be
overwritten in the platform/$(uname).sh scripts.

Tests all pass on OpenBSD and Debian 8.7.

Cheers,
Aaron

diff --git a/src/password-store.sh b/src/password-store.sh
index 1ab6fb5..737ea5b 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -20,6 +20,13 @@ GENERATED_LENGTH="${PASSWORD_STORE_GENERATED_LENGTH:-25}"
 CHARACTER_SET="${PASSWORD_STORE_CHARACTER_SET:-[:graph:]}"
 
CHARACTER_SET_NO_SYMBOLS="${PASSWORD_STORE_CHARACTER_SET_NO_SYMBOLS:-[:alnum:]}"
 
+CP_OPTS="-v"
+RM_OPTS="-v"
+MV_OPTS="-v"
+GREP_OPTS="--color=always"
+MKDIR_OPTS="-v -p"
+TREE="tree"
+
 export GIT_CEILING_DIRECTORIES="$PREFIX/.."
 
 #
@@ -316,14 +323,14 @@ cmd_init() {
 
        if [[ $# -eq 1 && -z $1 ]]; then
                [[ ! -f "$gpg_id" ]] && die "Error: $gpg_id does not exist and 
so cannot be removed."
-               rm -v -f "$gpg_id" || exit 1
+               rm $RM_OPTS -f "$gpg_id" || exit 1
                if [[ -n $INNER_GIT_DIR ]]; then
                        git -C "$INNER_GIT_DIR" rm -qr "$gpg_id"
                        git_commit "Deinitialize ${gpg_id}${id_path:+ 
($id_path)}."
                fi
                rmdir -p "${gpg_id%/*}" 2>/dev/null
        else
-               mkdir -v -p "$PREFIX/$id_path"
+               mkdir $MKDIR_OPTS "$PREFIX/$id_path"
                printf "%s\n" "$@" > "$gpg_id"
                local id_print="$(printf "%s, " "$@")"
                echo "Password store initialized for ${id_print%, }${id_path:+ 
($id_path)}"
@@ -379,7 +386,7 @@ cmd_show() {
                else
                        echo "${path%\/}"
                fi
-               tree -C -l --noreport "$PREFIX/$path" | tail -n +2 | sed -E 
's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' # remove .gpg at end of line, but keep 
colors
+               "$TREE" -C -l --noreport "$PREFIX/$path" | tail -n +2 | sed -E 
's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' # remove .gpg at end of line, but keep 
colors
        elif [[ -z $path ]]; then
                die "Error: password store is empty. Try \"pass init\"."
        else
@@ -391,14 +398,14 @@ cmd_find() {
        [[ $# -eq 0 ]] && die "Usage: $PROGRAM $COMMAND pass-names..."
        IFS="," eval 'echo "Search Terms: $*"'
        local terms="*$(printf '%s*|*' "$@")"
-       tree -C -l --noreport -P "${terms%|*}" --prune --matchdirs 
--ignore-case "$PREFIX" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( 
->|$)/\1\2/g'
+       "$TREE" -C -l --noreport -P "${terms%|*}" --prune --matchdirs 
--ignore-case "$PREFIX" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( 
->|$)/\1\2/g'
 }
 
 cmd_grep() {
        [[ $# -ne 1 ]] && die "Usage: $PROGRAM $COMMAND search-string"
        local search="$1" passfile grepresults
        while read -r -d "" passfile; do
-               grepresults="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | grep 
--color=always "$search")"
+               grepresults="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | grep 
$GREP_OPTS "$search")"
                [[ $? -ne 0 ]] && continue
                passfile="${passfile%.gpg}"
                passfile="${passfile#$PREFIX/}"
@@ -430,7 +437,7 @@ cmd_insert() {
 
        [[ $force -eq 0 && -e $passfile ]] && yesno "An entry already exists 
for $path. Overwrite it?"
 
-       mkdir -p -v "$PREFIX/$(dirname "$path")"
+       mkdir $MKDIR_OPTS "$PREFIX/$(dirname "$path")"
        set_gpg_recipients "$(dirname "$path")"
 
        if [[ $multiline -eq 1 ]]; then
@@ -464,7 +471,7 @@ cmd_edit() {
 
        local path="${1%/}"
        check_sneaky_paths "$path"
-       mkdir -p -v "$PREFIX/$(dirname "$path")"
+       mkdir $MKDIR_OPTS "$PREFIX/$(dirname "$path")"
        set_gpg_recipients "$(dirname "$path")"
        local passfile="$PREFIX/$path.gpg"
        set_git "$passfile"
@@ -506,7 +513,7 @@ cmd_generate() {
        local length="${2:-$GENERATED_LENGTH}"
        check_sneaky_paths "$path"
        [[ ! $length =~ ^[0-9]+$ ]] && die "Error: pass-length \"$length\" must 
be a number."
-       mkdir -p -v "$PREFIX/$(dirname "$path")"
+       mkdir $MKDIR_OPTS "$PREFIX/$(dirname "$path")"
        set_gpg_recipients "$(dirname "$path")"
        local passfile="$PREFIX/$path.gpg"
        set_git "$passfile"
@@ -561,7 +568,7 @@ cmd_delete() {
 
        [[ $force -eq 1 ]] || yesno "Are you sure you would like to delete 
$path?"
 
-       rm $recursive -f -v "$passfile"
+       rm $recursive -f $RM_OPTS "$passfile"
        set_git "$passfile"
        if [[ -n $INNER_GIT_DIR && ! -e $passfile ]]; then
                git -C "$INNER_GIT_DIR" rm -qr "$passfile"
@@ -595,7 +602,7 @@ cmd_copy_move() {
        echo "$old_path"
        [[ -e $old_path ]] || die "Error: $1 is not in the password store."
 
-       mkdir -p -v "${new_path%/*}"
+       mkdir $MKDIR_OPTS "${new_path%/*}"
        [[ -d $old_path || -d $new_path || $new_path == */ ]] || 
new_path="${new_path}.gpg"
 
        local interactive="-i"
@@ -603,7 +610,8 @@ cmd_copy_move() {
 
        set_git "$new_path"
        if [[ $move -eq 1 ]]; then
-               mv $interactive -v "$old_path" "$new_path" || exit 1
+               echo mv $interactive $MV_OPTS "$old_path" "$new_path"
+               mv $interactive $MV_OPTS "$old_path" "$new_path" || exit 1
                [[ -e "$new_path" ]] && reencrypt_path "$new_path"
 
                set_git "$new_path"
@@ -620,7 +628,7 @@ cmd_copy_move() {
                fi
                rmdir -p "$old_dir" 2>/dev/null
        else
-               cp $interactive -r -v "$old_path" "$new_path" || exit 1
+               cp $interactive -r $CP_OPTS "$old_path" "$new_path" || exit 1
                [[ -e "$new_path" ]] && reencrypt_path "$new_path"
                git_add_file "$new_path" "Copy ${1} to ${2}."
        fi
diff --git a/src/platform/openbsd.sh b/src/platform/openbsd.sh
index b66b32f..aa7d479 100644
--- a/src/platform/openbsd.sh
+++ b/src/platform/openbsd.sh
@@ -38,3 +38,10 @@ tmpdir() {
 
 GETOPT="gnugetopt"
 SHRED="rm -P -f"
+CP_OPTS=""
+RM_OPTS=""
+MV_OPTS=""
+GREP_OPTS=""
+MKDIR_OPTS="-p"
+TREE="colortree"
+

-- 
PGP: 0x1F81112D62A9ADCE / 3586 3350 BFEA C101 DB1A  4AF0 1F81 112D 62A9 ADCE

Attachment: signature.asc
Description: PGP signature

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

Reply via email to