config-lsp/handlers/openssh/documentation-values.go
2024-07-29 21:27:06 +02:00

42 lines
731 B
Go

package openssh
import (
"os/exec"
"strings"
)
var _cachedQueries map[string][]string = make(map[string][]string)
func queryValues(query string) ([]string, error) {
cmd := exec.Command("ssh", "-Q", query)
output, err := cmd.Output()
if err != nil {
return []string{}, err
}
return strings.Split(string(output), "\n"), nil
}
func QueryOpenSSHOptions(
query string,
) ([]string, error) {
var availableQueries []string
key := query
if _cachedQueries[key] != nil && len(_cachedQueries[key]) > 0 {
return _cachedQueries[key], nil
} else {
availableQueries, err := queryValues(query)
if err != nil {
return []string{}, err
}
_cachedQueries[key] = availableQueries
}
return availableQueries, nil
}