feat: add Go SSH config management functions and type
7 funciones Go del dominio infra para gestion programatica de ~/.ssh/config: ssh_config_parse (parser de bloques Host/Match), ssh_config_read (lectura del archivo), ssh_config_find (busqueda por host), ssh_config_add_entry y ssh_config_remove_entry (CRUD), ssh_config_render (serializacion a texto), ssh_config_write (escritura atomica). Incluye tipo SshConfigEntry (product type) y tests unitarios del parser.
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
package infra
|
||||
|
||||
import "fmt"
|
||||
|
||||
// SSHConfigRemoveEntry elimina el entry con el alias dado. Retorna error si
|
||||
// el alias no existe. No muta el slice original.
|
||||
func SSHConfigRemoveEntry(entries []SSHConfigEntry, alias string) ([]SSHConfigEntry, error) {
|
||||
idx := -1
|
||||
for i, e := range entries {
|
||||
if e.Alias == alias {
|
||||
idx = i
|
||||
break
|
||||
}
|
||||
}
|
||||
if idx < 0 {
|
||||
return nil, fmt.Errorf("alias %q not found", alias)
|
||||
}
|
||||
result := make([]SSHConfigEntry, 0, len(entries)-1)
|
||||
result = append(result, entries[:idx]...)
|
||||
result = append(result, entries[idx+1:]...)
|
||||
return result, nil
|
||||
}
|
||||
Reference in New Issue
Block a user