From 72f3e6acde61d73dc2ca7a96c0d59716cc3c1d48 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Wed, 21 Dec 2016 16:27:07 +0100 Subject: extensions: introduce system extensions --- Makefile | 4 ++-- src/password-store.sh | 19 ++++++++++++++----- 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 -- cgit v1.2.3-59-g8ed1b