summaryrefslogtreecommitdiff
path: root/mut/nushell/env.nu
diff options
context:
space:
mode:
authorMike Vink <59492084+ivi-vink@users.noreply.github.com>2025-01-21 00:14:36 +0100
committerMike Vink <59492084+ivi-vink@users.noreply.github.com>2025-01-21 14:03:00 +0100
commitead6a5bb3fbac065e78886c1ccc6133601a5e6b6 (patch)
tree867a3971d82d5b765f07c12f306b069b2ed63d16 /mut/nushell/env.nu
parentba3ada060f5a9955ebc1fffda85ca3bb966578db (diff)
check if agent already exists
Diffstat (limited to 'mut/nushell/env.nu')
-rw-r--r--mut/nushell/env.nu31
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
+}