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:
2026-04-12 13:54:43 +02:00
parent 773bb3a523
commit f2753e6fff
17 changed files with 834 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
package infra
import "fmt"
// SSHConfigAddEntry añade un nuevo entry a la lista. Retorna error si el alias
// ya existe. No muta el slice original.
func SSHConfigAddEntry(entries []SSHConfigEntry, entry SSHConfigEntry) ([]SSHConfigEntry, error) {
for _, e := range entries {
if e.Alias == entry.Alias {
return nil, fmt.Errorf("alias %q already exists", entry.Alias)
}
}
result := make([]SSHConfigEntry, len(entries), len(entries)+1)
copy(result, entries)
return append(result, entry), nil
}