diff options
Diffstat (limited to '.config/shell/functions.d/bwu')
-rw-r--r-- | .config/shell/functions.d/bwu | 29 |
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 +} |