compose/cli/cmd/run/opts.go

53 lines
988 B
Go

package run
import (
"fmt"
"strconv"
"strings"
"github.com/docker/api/containers"
)
type runOpts struct {
name string
publish []string
}
func toPorts(ports []string) ([]containers.Port, error) {
var result []containers.Port
for _, port := range ports {
parts := strings.Split(port, ":")
if len(parts) != 2 {
return nil, fmt.Errorf("unable to parse ports %q", port)
}
source, err := strconv.Atoi(parts[0])
if err != nil {
return nil, err
}
destination, err := strconv.Atoi(parts[1])
if err != nil {
return nil, err
}
result = append(result, containers.Port{
Source: uint32(source),
Destination: uint32(destination),
})
}
return result, nil
}
func (r *runOpts) toContainerConfig(image string) (containers.ContainerConfig, error) {
publish, err := toPorts(r.publish)
if err != nil {
return containers.ContainerConfig{}, err
}
return containers.ContainerConfig{
ID: r.name,
Image: image,
Ports: publish,
}, nil
}