aboutsummaryrefslogtreecommitdiff
path: root/.config/shell/functions.d/bwu
diff options
context:
space:
mode:
Diffstat (limited to '.config/shell/functions.d/bwu')
-rw-r--r--.config/shell/functions.d/bwu29
1 files changed, 29 insertions, 0 deletions
diff --git a/.config/shell/functions.d/bwu b/.config/shell/functions.d/bwu
new file mode 100644
index 0000000..78c1378
--- /dev/null
+++ b/.config/shell/functions.d/bwu
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+bwu() {
+ bwu_sessionfile="/tmp/bw-session-$USER"
+
+ if [ ! -f "$bwu_sessionfile" ]
+ then
+ # Create session file with very strict permissions
+ bwu_sessiondir="$(dirname "$bwu_sessionfile")"
+
+ if [ ! -d "$bwu_sessiondir" ]
+ then
+ mkdir -p -- "$(dirname "$bwu_sessionfile")"
+ chmod -- 0700 "$(dirname "$bwu_sessionfile")"
+ fi
+
+ touch -- "$bwu_sessionfile"
+ chmod -- 0600 "$bwu_sessionfile"
+
+ # Actually get a session token
+ bw unlock --raw > "$bwu_sessionfile"
+ fi
+
+ BW_SESSION="$(cat "$bwu_sessionfile")"
+ export BW_SESSION
+
+ unset bwu_sessionfile
+ unset bwu_sessiondir
+}