From e732b79ce213490e42198d419242796d8e70d3c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Michael=20O=2E=20Hegg=C3=B8?= Date: Sat, 8 Mar 2025 23:38:17 +0100 Subject: [PATCH] Fix ssh-completions when there's no includes (#1065) The ssh-completion didn't work when I first tried to source it. Turned out that `reduce` failed when `$includes` was an empty list: ```nushell $includes | par-each {|p| $p | open --raw | process } | reduce {|it| merge deep $it --strategy=append } ``` The change proposed in this PR fixes the problem so the completion also works if there are no includes in the ssh config files. I'm a total nushell beginner though, so I'm not sure if it's the best or the most idiomatic way to solve the problem :) --- custom-completions/ssh/ssh-completions.nu | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/custom-completions/ssh/ssh-completions.nu b/custom-completions/ssh/ssh-completions.nu index 32e6055a6..bd97f9261 100644 --- a/custom-completions/ssh/ssh-completions.nu +++ b/custom-completions/ssh/ssh-completions.nu @@ -89,7 +89,7 @@ def "nu-complete ssh-host" [] { $r.includes = $r.includes | each {|f| $folder | path join $f } $r } | reduce {|it| merge deep $it --strategy=append } - let hosts = $first_result.hosts + let $includes: list = $first_result.includes | each {|f| if '*' in $f { glob $f @@ -99,8 +99,11 @@ def "nu-complete ssh-host" [] { } | flatten # Process include files - let second_result = $includes | par-each {|p| $p | open --raw | process } | reduce {|it| merge deep $it --strategy=append } - # We don't further process "Include" lines in these secondary files. - let hosts = $hosts ++ $second_result.hosts + let included_hosts = (if ($includes | is-empty) { [] } else { + let second_result = $includes | par-each {|p| $p | open --raw | process } | reduce {|it| merge deep $it --strategy=append } + $second_result.hosts + }) + + let hosts = $first_result.hosts ++ $included_hosts $hosts | each { {value: $in.name, description: $in.addr } } }