mirror of
https://github.com/RGBCube/nu_scripts
synced 2025-08-01 14:47:47 +00:00
Fix: SSH config may not contain hostname (#893)
I am sorry. I assumed that an SSH host in the config file must contain a hostname, but this assumption is not true. If a user reads an SSH host that doesn't contain a hostname, it will fail to parse.
This commit is contained in:
parent
0d70dbddd5
commit
1533149826
2 changed files with 16 additions and 8 deletions
|
@ -21,6 +21,8 @@ Host my-ip
|
|||
HostName 192.168.50.237
|
||||
Host mydomain
|
||||
HostName mydomain.example.com
|
||||
Host no.hostname
|
||||
ProxyCommand ssh -q -W %h:%p office
|
||||
Host my-domain-2
|
||||
HostName mydomain-2.example.com
|
||||
Host my_domain_3
|
||||
|
@ -34,6 +36,7 @@ When you press the tab key, it will display:
|
|||
❯ | ssh
|
||||
my-ip 192.168.50.237
|
||||
mydomain mydomain.example.com
|
||||
no.hostname
|
||||
my-domain-2 mydomain-2.example.com
|
||||
my_domain_3 mydomain_3.example.com
|
||||
|
||||
|
|
|
@ -38,15 +38,20 @@ def "nu-complete ssh-host" [] {
|
|||
|
||||
$files | each { |file|
|
||||
let lines = $file | open | lines | str trim
|
||||
let hosts = $lines
|
||||
| parse --regex '^Host\s+(?<host>.+)'
|
||||
| get host
|
||||
|
||||
let hostnames = $lines
|
||||
| parse --regex '^HostName\s+(?<hostname>.+)'
|
||||
| get hostname
|
||||
$hosts | zip $hostnames | each { ||
|
||||
{'value': $in.0, 'description': $in.1}
|
||||
mut result = []
|
||||
for $line in $lines {
|
||||
let data = $line | parse --regex '^Host\s+(?<host>.+)'
|
||||
if ($data | is-not-empty) {
|
||||
$result = ($result | append { 'value': ($data.host | first), 'description': "" })
|
||||
continue;
|
||||
}
|
||||
let data = $line | parse --regex '^HostName\s+(?<hostname>.+)'
|
||||
if ($data | is-not-empty) {
|
||||
let last = $result | last | update 'description' ($data.hostname | first)
|
||||
$result = ($result | drop | append $last)
|
||||
}
|
||||
}
|
||||
$result
|
||||
} | flatten
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue