From bcdd4000f06300e6078fb8ebbd13786cceebe0f7 Mon Sep 17 00:00:00 2001 From: Rasmus Rosengren Date: Tue, 14 Sep 2021 01:49:38 +0200 Subject: [PATCH] add fish ssh agent --- .config/fish/conf.d/fish-ssh-agent.fish | 8 ++++++++ .../fish/functions/__ssh_agent_is_started.fish | 15 +++++++++++++++ .config/fish/functions/__ssh_agent_start.fish | 6 ++++++ 3 files changed, 29 insertions(+) create mode 100644 .config/fish/conf.d/fish-ssh-agent.fish create mode 100644 .config/fish/functions/__ssh_agent_is_started.fish create mode 100644 .config/fish/functions/__ssh_agent_start.fish diff --git a/.config/fish/conf.d/fish-ssh-agent.fish b/.config/fish/conf.d/fish-ssh-agent.fish new file mode 100644 index 0000000..8315237 --- /dev/null +++ b/.config/fish/conf.d/fish-ssh-agent.fish @@ -0,0 +1,8 @@ +# From https://github.com/danhper/fish-ssh-agent +if test -z "$SSH_ENV" + set -xg SSH_ENV $HOME/.ssh/environment +end + +if not __ssh_agent_is_started + __ssh_agent_start +end diff --git a/.config/fish/functions/__ssh_agent_is_started.fish b/.config/fish/functions/__ssh_agent_is_started.fish new file mode 100644 index 0000000..70c7aed --- /dev/null +++ b/.config/fish/functions/__ssh_agent_is_started.fish @@ -0,0 +1,15 @@ +# From https://github.com/danhper/fish-ssh-agent +function __ssh_agent_is_started -d "check if ssh agent is already started" + if begin; test -f $SSH_ENV; and test -z "$SSH_AGENT_PID"; end + source $SSH_ENV > /dev/null + end + + if begin; test -z "$SSH_AGENT_PID"; and test -z "$SSH_CONNECTION"; end + return 1 + end + + ssh-add -l > /dev/null 2>&1 + if test $status -eq 2 + return 1 + end +end diff --git a/.config/fish/functions/__ssh_agent_start.fish b/.config/fish/functions/__ssh_agent_start.fish new file mode 100644 index 0000000..33c46d7 --- /dev/null +++ b/.config/fish/functions/__ssh_agent_start.fish @@ -0,0 +1,6 @@ +# From https://github.com/danhper/fish-ssh-agent +function __ssh_agent_start -d "start a new ssh agent" + ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV + chmod 600 $SSH_ENV + source $SSH_ENV > /dev/null +end