diff options
| author | Mike Vink <59492084+ivi-vink@users.noreply.github.com> | 2025-01-21 00:14:36 +0100 |
|---|---|---|
| committer | Mike Vink <59492084+ivi-vink@users.noreply.github.com> | 2025-01-21 14:03:00 +0100 |
| commit | ead6a5bb3fbac065e78886c1ccc6133601a5e6b6 (patch) | |
| tree | 867a3971d82d5b765f07c12f306b069b2ed63d16 | |
| parent | ba3ada060f5a9955ebc1fffda85ca3bb966578db (diff) | |
check if agent already exists
| -rw-r--r-- | mut/nushell/env.nu | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/mut/nushell/env.nu b/mut/nushell/env.nu index b186624..c077610 100644 --- a/mut/nushell/env.nu +++ b/mut/nushell/env.nu @@ -121,10 +121,27 @@ if (not ("/var/run/docker.sock" | path exists)) and (not ((uname | get operating $env.XDG_CACHE_HOME = $"($env.HOME)/.cache" $env.XDG_DATA_HOME = $"($env.HOME)/.local/share" -^ssh-agent -c - | lines - | first 2 - | parse "setenv {name} {value};" - | transpose -r - | into record - | load-env +do --env { + let ssh_agent_file = ( + $nu.temp-path | path join $"ssh-agent-($env.USER).nuon" + ) + + if ($ssh_agent_file | path exists) { + let ssh_agent_env = open ($ssh_agent_file) + if ($"/proc/($ssh_agent_env.SSH_AGENT_PID)" | path exists) { + load-env $ssh_agent_env + return + } else { + rm $ssh_agent_file + } + } + + let ssh_agent_env = ^ssh-agent -c + | lines + | first 2 + | parse "setenv {name} {value};" + | transpose --header-row + | into record + load-env $ssh_agent_env + $ssh_agent_env | save --force $ssh_agent_file +} |
