commit c78d3b06f9c70a52b0bbc38de694a0cfed494031 Author: Matthias Johnson Date: Wed Dec 25 22:10:12 2024 -0700 first commit diff --git a/bwz b/bwz new file mode 100755 index 0000000..2b0b5f9 --- /dev/null +++ b/bwz @@ -0,0 +1,44 @@ +#!/bin/bash + +# Trap EXIT signal to clean up +cleanup() { + echo "Cleaning up temporary directories..." + rm -rf "$TMP_DIR" +} +#trap cleanup EXIT + +# Create temporary directories in tmpfs +TMP_DIR="/dev/shm/bwz-cache" +[[ ! -d $TMP_DIR ]] && mkdir "$TMP_DIR" +[[ ! -d $TMP_DIR ]] && echo "failed to create tmp dir" && exit 1 + +if [[ ! -f "${TMP_DIR}/items" ]] || [[ ! -f "${TMP_DIR}/items" ]]; then + BW_SESSION=$(bw unlock --raw) + export BW_SESSION + echo "$BW_SESSION" > "${TMP_DIR}/session" + + #cp items.json "${TMP_DIR}/items" + gum spin --title 'fetching items ...' -s dot bw list items > "${TMP_DIR}/items" + + #cp folders.json "${TMP_DIR}/folders" + gum spin --title 'fetching folder list ...' -s dot bw list folders > "${TMP_DIR}/folders" +fi + +BW_SESSION=$(<${TMP_DIR}/session) +export BW_SESSION + +items="${TMP_DIR}/items" +folders="${TMP_DIR}/folders" + +TAB=" " +folder_sed=$(jq -r '.[] | [ "s@" , .id , "@" , .name , "@;" ] | join("")' < "$folders") + +jq -r '.[] | [ .id, "{{ Color \"10\" \"0\" \""+ .name +"\" }}", .folderId ] | join("'"$TAB"'")' <"$items" \ + | sed -e "$folder_sed" \ + | gum format -t template \ + | fzf --ansi -i --delimiter "$TAB" --with-nth 2,3 \ + --bind "alt-u:execute(jq '.[] | select(.id == \"{1}\") | .login.username'