func()

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)
	}
}