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