<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>The variable names (CP_OPTS, RM_OPTS, MV_OPTS, GREP_OPTS,
MKDIR_OPTS) seem too generic to me, given that they're just one
subset of the options for a particular situation. E.g. OUTPUT_OPTS
would be better since they're all related to logging, seems better
to me. (And don't include the -p for mkdir in there; if there's
ever support for a platform whose mkdir doesn't have a -p, it can
get it's own variable.)<br>
</p>
Cheers<br>
-Lorrin<br>
<br>
<div class="moz-cite-prefix">On 03/03/2017 06:46 AM, Aaron Bieber
wrote:<br>
</div>
<blockquote
cite="mid:20170303144603.njhirgt463htkhu5@slip.bold.daemon"
type="cite">
<pre wrap="">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"
+
</pre>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Password-Store mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Password-Store@lists.zx2c4.com">Password-Store@lists.zx2c4.com</a>
<a class="moz-txt-link-freetext" href="https://lists.zx2c4.com/mailman/listinfo/password-store">https://lists.zx2c4.com/mailman/listinfo/password-store</a>
</pre>
</blockquote>
<br>
</body>
</html>