commit fce75906dbc665faaabdfaa0b8ed13d7f6006352
parent e0ec888a9a9e52f284d80e3ac2a470adfb4fc4ec
Author: Sean Enck <sean@ttypty.com>
Date: Tue, 12 Jul 2022 18:11:48 -0400
adding hooks
Diffstat:
4 files changed, 30 insertions(+), 14 deletions(-)
diff --git a/cmd/lb/main.go b/cmd/lb/main.go
@@ -34,16 +34,14 @@ func hooks() {
}
for _, d := range dirs {
if !d.IsDir() {
- if d.Type() & 0111 == 011 {
- name := d.Name()
- cmd := exec.Command(filepath.Join(hookDir, name))
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- if err := cmd.Run(); err != nil {
- internal.Die(fmt.Sprintf("hook failed: %s", name), err)
- }
- continue
- }
+ name := d.Name()
+ cmd := exec.Command(filepath.Join(hookDir, name))
+ cmd.Stdout = os.Stdout
+ cmd.Stderr = os.Stderr
+ if err := cmd.Run(); err != nil {
+ internal.Die(fmt.Sprintf("hook failed: %s", name), err)
+ }
+ continue
}
internal.Die("invalid hook", internal.NewLockboxError("hook is not file and/or has wrong mode"))
}
diff --git a/internal/utils.go b/internal/utils.go
@@ -15,8 +15,9 @@ import (
type (
// Color are terminal colors for dumb terminal coloring.
Color int
+ // LockboxError for internal errors for lockbox operations.
LockboxError struct {
- message string
+ message string
}
)
diff --git a/tests/expected.log b/tests/expected.log
@@ -1,10 +1,13 @@
+HOOK RAN
+HOOK RAN
keys/one:
test
keys/one2:
test2
+HOOK RAN
keys/one
keys/one2
keys2/three
@@ -12,7 +15,8 @@ uuuuuuuuuu
rekeying: /keys/one.lb
rekeying: /keys/one2.lb
rekeying: /keys2/three.lb
-remove entry? (y/N)
+remove entry? (y/N) HOOK RAN
+
keys/one2
keys2/three
keys/one2
@@ -21,11 +25,14 @@ test2
test3
test4
+HOOK RAN
test
XXXXXX
test2
-remove entry? (y/N)
-remove entry? (y/N)
+remove entry? (y/N) HOOK RAN
+
+remove entry? (y/N) HOOK RAN
+
unable to decrypt (decrypt not ok)
rekeying: /keys/one2.lb
test2
diff --git a/tests/run.sh b/tests/run.sh
@@ -11,6 +11,7 @@ export LOCKBOX_KEYMODE="plaintext"
export LOCKBOX_KEY="plaintextkey"
export LOCKBOX_TOTP="totp"
export LOCKBOX_INTERACTIVE="no"
+export LOCKBOX_HOOKDIR="$TESTS/hooks"
export PWGEN_SOURCE="$PWD"
export PWGEN_SPECIAL="u"
export PWGEN_SED="s/[[:alnum:]]/u/g;s/\./u/g"
@@ -24,6 +25,13 @@ git -C $LOCKBOX_STORE add .
git -C $LOCKBOX_STORE config user.email "you@example.com"
git -C $LOCKBOX_STORE config user.name "Your Name"
git -C $LOCKBOX_STORE commit -am "init"
+HOOK=$LOCKBOX_HOOKDIR/hook
+mkdir -p $LOCKBOX_HOOKDIR
+
+_hook() {
+ echo "#!/bin/sh"
+ echo "echo HOOK RAN"
+}
_run() {
echo "test" | "$BIN/lb" insert keys/one
@@ -53,6 +61,8 @@ _run() {
}
LOG=$TESTS/lb.log
+_hook > $HOOK
+chmod 755 $HOOK
_run 2>&1 | sed "s#$LOCKBOX_STORE##g" > $LOG
if ! diff -u $LOG expected.log; then
exit 1