Recently I work with GitHub CLI a lot, and having to constantly fire up Bitwarden app to retrieve GITHUB_TOKEN gets old real fast…

I was thinking of storing it in a gist in a password manager, luckily someone had the same idea and implemented it. The only issue is that I use fish shell. But we live in a world where there are many ways to interact with the shell, so it follows that you can translate zsh syntax to fish syntax.

For the original snippet in zsh, translated as fish:

function unlock_bw_if_locked
    if test -z BW_SESSION
        echo 'bw locked - unlocking into a new session'
        export BW_SESSION="$(bw unlock --raw)"
    end
end

function load_github
  unlock_bw_if_locked

  set -l github_pat_id $BITWARDEN_GIST_ID
  set -l github_token
  set -l github_token "$(bw get notes $github_pat_id)"
  export GITHUB_OAUTH_TOKEN="$github_token"
  export GITHUB_TOKEN="$github_token"
  export GIT_TOKEN="$github_token"
end