mirror of https://github.com/containers/podman.git
38 lines
1000 B
Go
38 lines
1000 B
Go
//go:build darwin
|
||
|
||
package apple
|
||
|
||
import (
|
||
"errors"
|
||
"fmt"
|
||
"net/url"
|
||
)
|
||
|
||
// This code is adapted from github.com/crc-org/vfkit/pkg/rest/rest.go as of vkit v0.6.0.
|
||
// We don’t want to import that directly because it imports an enormous dependency tree.
|
||
|
||
// This was taken from github.com/crc-org/vfkit/pkg/rest.NewEndpoint(input).ToCmdLine()
|
||
// and adapted with only the case we use.
|
||
func restNewEndpointToCmdLine(input string) ([]string, error) {
|
||
uri, err := url.ParseRequestURI(input)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
switch uri.Scheme {
|
||
case "tcp", "http":
|
||
if len(uri.Host) < 1 {
|
||
return nil, errors.New("invalid TCP uri: missing host")
|
||
}
|
||
if len(uri.Path) > 0 {
|
||
return nil, errors.New("invalid TCP uri: path is forbidden")
|
||
}
|
||
if uri.Port() == "" {
|
||
return nil, errors.New("invalid TCP uri: missing port")
|
||
}
|
||
return []string{"--restful-uri", fmt.Sprintf("tcp://%s%s", uri.Host, uri.Path)}, nil
|
||
default:
|
||
return nil, fmt.Errorf("invalid scheme %s", uri.Scheme)
|
||
}
|
||
}
|