diff options
Diffstat (limited to 'mut')
| -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 +} |
