m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--INSTALL3
-rw-r--r--Makefile47
2 files changed, 25 insertions, 25 deletions
diff --git a/INSTALL b/INSTALL
index a0214b4..f267f80 100644
--- a/INSTALL
+++ b/INSTALL
@@ -19,7 +19,8 @@ The install target will automatically determine the existance
of bash, zsh, and fish, and install the completion files as
needed. If you'd like to force installation, you may set
FORCE_BASHCOMP, FORCE_ZSHCOMP, or FORCE_FISHCOMP to 1, or set
-FORCE_ALL to 1.
+FORCE_ALL to 1. The exact paths of the completions can be
+controlled with BASHCOMP_PATH, ZSHCOMP_PATH, and FISHCOMP_PATH.
-- Test Suite --
diff --git a/Makefile b/Makefile
index 836ff91..cce093b 100644
--- a/Makefile
+++ b/Makefile
@@ -6,47 +6,45 @@ MANDIR ?= $(PREFIX)/share/man
PLATFORMFILE := src/platform/$(shell uname | cut -d _ -f 1 | tr '[:upper:]' '[:lower:]').sh
+BASHCOMP_PATH ?= $(DESTDIR)$(PREFIX)/share/bash-completion/completions
+ZSHCOMP_PATH ?= $(DESTDIR)$(PREFIX)/share/zsh/site-functions
+FISHCOMP_PATH ?= $(DESTDIR)$(PREFIX)/share/fish/completions
+
ifeq ($(FORCE_ALL),1)
FORCE_BASHCOMP := 1
FORCE_ZSHCOMP := 1
FORCE_FISHCOMP := 1
endif
-
-ifeq ($(FORCE_BASHCOMP),1)
-BASHCOMP_SWITCH := "-D"
-else
-BASHCOMP_SWITCH :=
+ifneq ($(strip $(wildcard $(BASHCOMP_PATH))),)
+FORCE_BASHCOMP := 1
endif
-ifeq ($(FORCE_ZSHCOMP),1)
-ZSHCOMP_SWITCH := "-D"
-else
-ZSHCOMP_SWITCH :=
+ifneq ($(strip $(wildcard $(ZSHCOMP_PATH))),)
+FORCE_ZSHCOMP := 1
endif
-ifeq ($(FORCE_FISHCOMP),1)
-FISHCOMP_SWITCH := "-D"
-else
-FISHCOMP_SWITCH :=
+ifneq ($(strip $(wildcard $(FISHCOMP_PATH))),)
+FORCE_FISHCOMP := 1
endif
all:
@echo "Password store is a shell script, so there is nothing to do. Try \"make install\" instead."
install-common:
- @install -m 0644 -v -D man/pass.1 "$(DESTDIR)$(MANDIR)/man1/pass.1"
-
- @install -m 0644 -v $(BASHCOMP_SWITCH) src/completion/pass.bash-completion "$(DESTDIR)$(PREFIX)/share/bash-completion/completions/pass" 2>/dev/null || echo "** Bash completion file skipped. **"
- @install -m 0644 -v $(ZSHCOMP_SWITCH) src/completion/pass.zsh-completion "$(DESTDIR)$(PREFIX)/share/zsh/site-functions/_pass" 2>/dev/null || echo "** Zsh completion file skipped. **"
- @install -m 0644 -v $(FISHCOMP_SWITCH) src/completion/pass.fish-completion "$(DESTDIR)$(PREFIX)/share/fish/completions/pass.fish" 2>/dev/null || echo "** Fish completion file skipped. **"
+ @mkdir -p "$(DESTDIR)$(MANDIR)/man1" && install -m 0644 -v man/pass.1 "$(DESTDIR)$(MANDIR)/man1/pass.1"
+
+ @[ "$(FORCE_BASHCOMP)" == "1" ] && mkdir -p "$(BASHCOMP_PATH)" && install -m 0644 -v src/completion/pass.bash-completion "$(BASHCOMP_PATH)/pass" || true
+ @[ "$(FORCE_ZSHCOMP)" == "1" ] && mkdir -p "$(ZSHCOMP_PATH)" && install -m 0644 -v src/completion/pass.zsh-completion "$(ZSHCOMP_PATH)/_pass" || true
+ @[ "$(FORCE_FISHCOMP)" == "1" ] && mkdir -p "$(FISHCOMP_PATH)" && install -m 0644 -v src/completion/pass.fish-completion "$(FISHCOMP_PATH)/pass.fish" || true
+
ifneq ($(strip $(wildcard $(PLATFORMFILE))),)
install: install-common
- @install -m 0644 -v -D "$(PLATFORMFILE)" "$(DESTDIR)$(LIBDIR)/password-store/platform.sh"
- @mkdir -p -v "$(DESTDIR)$(BINDIR)/"
+ @mkdir -p "$(DESTDIR)$(LIBDIR)/password-store" && install -m 0644 -v "$(PLATFORMFILE)" "$(DESTDIR)$(LIBDIR)/password-store/platform.sh"
+ @mkdir -p "$(DESTDIR)$(BINDIR)/"
sed 's:.*PLATFORM_FUNCTION_FILE.*:source "$(DESTDIR)$(LIBDIR)/password-store/platform.sh":' src/password-store.sh > "$(DESTDIR)$(BINDIR)/pass"
@chmod 0755 "$(DESTDIR)$(BINDIR)/pass"
else
install: install-common
- @mkdir -p -v "$(DESTDIR)$(BINDIR)/"
+ @mkdir -p "$(DESTDIR)$(BINDIR)/"
sed '/PLATFORM_FUNCTION_FILE/d' src/password-store.sh > "$(DESTDIR)$(BINDIR)/pass"
@chmod 0755 "$(DESTDIR)$(BINDIR)/pass"
endif
@@ -56,9 +54,10 @@ uninstall:
"$(DESTDIR)$(BINDIR)/pass" \
"$(DESTDIR)$(LIBDIR)/password-store/" \
"$(DESTDIR)$(MANDIR)/man1/pass.1" \
- "$(DESTDIR)$(PREFIX)/share/bash-completion/completions/pass" \
- "$(DESTDIR)$(PREFIX)/share/zsh/site-functions/_pass" \
- "$(DESTDIR)$(PREFIX)/share/fish/completions/pass.fish"
+ "$(BASHCOMP_PATH)/pass" \
+ "$(ZSHCOMP_PATH)/_pass" \
+ "$(FISHCOMP_PATH)/pass.fish"
+ @rmdir "$(DESTDIR)$(LIBDIR)/password-store/" 2>/dev/null || true
TESTS = $(sort $(wildcard tests/t[0-9][0-9][0-9][0-9]-*.sh))