m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2016-12-21 16:27:07 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2016-12-21 16:27:07 +0100
commit72f3e6acde61d73dc2ca7a96c0d59716cc3c1d48 (patch)
treef97a2ec8f895c47132f3527949e248d6ec712532
parent0fb529fc0ea2e6ff1f5ed88902510322e2c8a693 (diff)
extensions: introduce system extensions
-rw-r--r--Makefile4
-rwxr-xr-xsrc/password-store.sh19
2 files changed, 16 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index 7546fa9..5bd4f14 100644
--- a/Makefile
+++ b/Makefile
@@ -40,12 +40,12 @@ ifneq ($(strip $(wildcard $(PLATFORMFILE))),)
install: install-common
@install -v -d "$(DESTDIR)$(LIBDIR)/password-store" && install -m 0644 -v "$(PLATFORMFILE)" "$(DESTDIR)$(LIBDIR)/password-store/platform.sh"
@install -v -d "$(DESTDIR)$(BINDIR)/"
- sed 's:.*PLATFORM_FUNCTION_FILE.*:source "$(DESTDIR)$(LIBDIR)/password-store/platform.sh":' src/password-store.sh > "$(DESTDIR)$(BINDIR)/pass"
+ sed 's:.*PLATFORM_FUNCTION_FILE.*:source "$(LIBDIR)/password-store/platform.sh":;s:^SYSTEM_EXTENSION_DIR=.*:SYSTEM_EXTENSION_DIR="$(LIBDIR)/password-store/extensions":' src/password-store.sh > "$(DESTDIR)$(BINDIR)/pass"
@chmod 0755 "$(DESTDIR)$(BINDIR)/pass"
else
install: install-common
@install -v -d "$(DESTDIR)$(BINDIR)/"
- sed '/PLATFORM_FUNCTION_FILE/d' src/password-store.sh > "$(DESTDIR)$(BINDIR)/pass"
+ sed '/PLATFORM_FUNCTION_FILE/d;s:^SYSTEM_EXTENSION_DIR=.*:SYSTEM_EXTENSION_DIR="$(LIBDIR)/password-store/extensions":' src/password-store.sh > "$(DESTDIR)$(BINDIR)/pass"
@chmod 0755 "$(DESTDIR)$(BINDIR)/pass"
endif
diff --git a/src/password-store.sh b/src/password-store.sh
index 52cc941..a5a8002 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -603,12 +603,21 @@ cmd_extension_or_show() {
cmd_show "$@"
fi
}
+
+SYSTEM_EXTENSION_DIR=""
cmd_extension() {
- [[ $PASSWORD_STORE_ENABLE_EXTENSIONS == true ]] || return 1
- local extension="$EXTENSIONS/$1.bash"
- check_sneaky_paths "$extension"
- [[ -f $extension && -x $extension ]] || return 1
- verify_file "$extension"
+ check_sneaky_paths "$1"
+ local user_extension system_extension extension
+ [[ -n $SYSTEM_EXTENSION_DIR ]] && system_extension="$SYSTEM_EXTENSION_DIR/$1.bash"
+ [[ $PASSWORD_STORE_ENABLE_EXTENSIONS == true ]] && user_extension="$EXTENSIONS/$1.bash"
+ if [[ -n $user_extension && -f $user_extension && -x $user_extension ]]; then
+ verify_file "$user_extension"
+ extension="$user_extension"
+ elif [[ -n $system_extension && -f $system_extension && -x $system_extension ]]; then
+ extension="$system_extension"
+ else
+ return 1
+ fi
shift
source "$extension" "$@"
return 0