in go/wsl/resolver/resolver.go [46:86]
func (w *WSLResolver) Resolve(p, n string) (string, error) {
switch p {
case "WSLPORT":
w.mu.Lock()
defer w.mu.Unlock()
port, ok := w.ports[n]
if ok {
return strconv.Itoa(port), nil
}
port, err := portpicker.PickUnusedPort()
if err != nil {
return "", err
}
w.ports[n] = port
return strconv.Itoa(port), nil
case "WSLENV":
env, ok := os.LookupEnv(n)
if !ok {
return "", fmt.Errorf("environment variable %s is undefined", n)
}
return env, nil
case "WSL":
switch n {
case "SESSION_ID":
return w.sessionID, nil
case "HOST_IP":
ips, err := net.LookupIP("localhost")
if err != nil {
return "", err
}
if len(ips) == 0 {
return "", errors.New("no ip found for localhost")
}
return ips[0].String(), nil
default:
return "", fmt.Errorf("unknown variable WSL:%s", n)
}
default:
return capabilities.NoOPResolver(p, n)
}
}