mirror of
https://github.com/docker/compose.git
synced 2026-02-09 01:59:22 +08:00
replace some uses of strings.Split(N) for strings.Cut
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
committed by
Nicolas De loof
parent
fa7549a851
commit
c51b1fea29
@@ -198,12 +198,11 @@ func (opts createOptions) Apply(project *types.Project) error {
|
|||||||
|
|
||||||
func applyScaleOpts(project *types.Project, opts []string) error {
|
func applyScaleOpts(project *types.Project, opts []string) error {
|
||||||
for _, scale := range opts {
|
for _, scale := range opts {
|
||||||
split := strings.Split(scale, "=")
|
name, val, ok := strings.Cut(scale, "=")
|
||||||
if len(split) != 2 {
|
if !ok || val == "" {
|
||||||
return fmt.Errorf("invalid --scale option %q. Should be SERVICE=NUM", scale)
|
return fmt.Errorf("invalid --scale option %q. Should be SERVICE=NUM", scale)
|
||||||
}
|
}
|
||||||
name := split[0]
|
replicas, err := strconv.Atoi(val)
|
||||||
replicas, err := strconv.Atoi(split[1])
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -213,9 +213,9 @@ func extractEnvCLIDefined(cmdEnvs []string) map[string]string {
|
|||||||
// Parse command-line environment variables
|
// Parse command-line environment variables
|
||||||
cmdEnvMap := make(map[string]string)
|
cmdEnvMap := make(map[string]string)
|
||||||
for _, env := range cmdEnvs {
|
for _, env := range cmdEnvs {
|
||||||
parts := strings.SplitN(env, "=", 2)
|
key, val, ok := strings.Cut(env, "=")
|
||||||
if len(parts) == 2 {
|
if ok {
|
||||||
cmdEnvMap[parts[0]] = parts[1]
|
cmdEnvMap[key] = val
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return cmdEnvMap
|
return cmdEnvMap
|
||||||
|
|||||||
@@ -50,19 +50,19 @@ func (p *psOptions) parseFilter() error {
|
|||||||
if p.Filter == "" {
|
if p.Filter == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
parts := strings.SplitN(p.Filter, "=", 2)
|
key, val, ok := strings.Cut(p.Filter, "=")
|
||||||
if len(parts) != 2 {
|
if !ok {
|
||||||
return errors.New("arguments to --filter should be in form KEY=VAL")
|
return errors.New("arguments to --filter should be in form KEY=VAL")
|
||||||
}
|
}
|
||||||
switch parts[0] {
|
switch key {
|
||||||
case "status":
|
case "status":
|
||||||
p.Status = append(p.Status, parts[1])
|
p.Status = append(p.Status, val)
|
||||||
|
return nil
|
||||||
case "source":
|
case "source":
|
||||||
return api.ErrNotImplemented
|
return api.ErrNotImplemented
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("unknown filter %s", parts[0])
|
return fmt.Errorf("unknown filter %s", key)
|
||||||
}
|
}
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func psCommand(p *ProjectOptions, dockerCli command.Cli, backendOptions *BackendOptions) *cobra.Command {
|
func psCommand(p *ProjectOptions, dockerCli command.Cli, backendOptions *BackendOptions) *cobra.Command {
|
||||||
|
|||||||
@@ -284,11 +284,11 @@ func runRun(ctx context.Context, backend api.Compose, project *types.Project, op
|
|||||||
|
|
||||||
labels := types.Labels{}
|
labels := types.Labels{}
|
||||||
for _, s := range options.labels {
|
for _, s := range options.labels {
|
||||||
parts := strings.SplitN(s, "=", 2)
|
key, val, ok := strings.Cut(s, "=")
|
||||||
if len(parts) != 2 {
|
if !ok {
|
||||||
return fmt.Errorf("label must be set as KEY=VALUE")
|
return fmt.Errorf("label must be set as KEY=VALUE")
|
||||||
}
|
}
|
||||||
labels[parts[0]] = parts[1]
|
labels[key] = val
|
||||||
}
|
}
|
||||||
|
|
||||||
var buildForRun *api.BuildOptions
|
var buildForRun *api.BuildOptions
|
||||||
|
|||||||
@@ -774,11 +774,10 @@ func (s *composeService) getLinks(ctx context.Context, projectName string, servi
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, rawLink := range service.Links {
|
for _, rawLink := range service.Links {
|
||||||
linkSplit := strings.Split(rawLink, ":")
|
// linkName if informed like in: "serviceName[:linkName]"
|
||||||
linkServiceName := linkSplit[0]
|
linkServiceName, linkName, ok := strings.Cut(rawLink, ":")
|
||||||
linkName := linkServiceName
|
if !ok {
|
||||||
if len(linkSplit) == 2 {
|
linkName = linkServiceName
|
||||||
linkName = linkSplit[1] // linkName if informed like in: "serviceName:linkName"
|
|
||||||
}
|
}
|
||||||
cnts, err := getServiceContainers(linkServiceName)
|
cnts, err := getServiceContainers(linkServiceName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -810,11 +809,9 @@ func (s *composeService) getLinks(ctx context.Context, projectName string, servi
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, rawExtLink := range service.ExternalLinks {
|
for _, rawExtLink := range service.ExternalLinks {
|
||||||
extLinkSplit := strings.Split(rawExtLink, ":")
|
externalLink, linkName, ok := strings.Cut(rawExtLink, ":")
|
||||||
externalLink := extLinkSplit[0]
|
if !ok {
|
||||||
linkName := externalLink
|
linkName = externalLink
|
||||||
if len(extLinkSplit) == 2 {
|
|
||||||
linkName = extLinkSplit[1]
|
|
||||||
}
|
}
|
||||||
links = append(links, format(externalLink, linkName))
|
links = append(links, format(externalLink, linkName))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -317,15 +317,15 @@ func splitCpArg(arg string) (ctr, path string) {
|
|||||||
return "", arg
|
return "", arg
|
||||||
}
|
}
|
||||||
|
|
||||||
parts := strings.SplitN(arg, ":", 2)
|
ctr, path, ok := strings.Cut(arg, ":")
|
||||||
|
|
||||||
if len(parts) == 1 || strings.HasPrefix(parts[0], ".") {
|
if !ok || strings.HasPrefix(ctr, ".") {
|
||||||
// Either there's no `:` in the arg
|
// Either there's no `:` in the arg
|
||||||
// OR it's an explicit local relative path like `./file:name.txt`.
|
// OR it's an explicit local relative path like `./file:name.txt`.
|
||||||
return "", arg
|
return "", arg
|
||||||
}
|
}
|
||||||
|
|
||||||
return parts[0], parts[1]
|
return ctr, path
|
||||||
}
|
}
|
||||||
|
|
||||||
func resolveLocalPath(localPath string) (absPath string, err error) {
|
func resolveLocalPath(localPath string) (absPath string, err error) {
|
||||||
|
|||||||
@@ -241,11 +241,8 @@ func (s *composeService) getCreateConfigs(ctx context.Context,
|
|||||||
} // VOLUMES/MOUNTS/FILESYSTEMS
|
} // VOLUMES/MOUNTS/FILESYSTEMS
|
||||||
tmpfs := map[string]string{}
|
tmpfs := map[string]string{}
|
||||||
for _, t := range service.Tmpfs {
|
for _, t := range service.Tmpfs {
|
||||||
if arr := strings.SplitN(t, ":", 2); len(arr) > 1 {
|
k, v, _ := strings.Cut(t, ":")
|
||||||
tmpfs[arr[0]] = arr[1]
|
tmpfs[k] = v
|
||||||
} else {
|
|
||||||
tmpfs[arr[0]] = ""
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
binds, mounts, err := s.buildContainerVolumes(ctx, *p, service, inherit)
|
binds, mounts, err := s.buildContainerVolumes(ctx, *p, service, inherit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -563,13 +560,13 @@ func defaultNetworkSettings(project *types.Project,
|
|||||||
func getRestartPolicy(service types.ServiceConfig) container.RestartPolicy {
|
func getRestartPolicy(service types.ServiceConfig) container.RestartPolicy {
|
||||||
var restart container.RestartPolicy
|
var restart container.RestartPolicy
|
||||||
if service.Restart != "" {
|
if service.Restart != "" {
|
||||||
split := strings.Split(service.Restart, ":")
|
name, num, ok := strings.Cut(service.Restart, ":")
|
||||||
var attempts int
|
var attempts int
|
||||||
if len(split) > 1 {
|
if ok {
|
||||||
attempts, _ = strconv.Atoi(split[1])
|
attempts, _ = strconv.Atoi(num)
|
||||||
}
|
}
|
||||||
restart = container.RestartPolicy{
|
restart = container.RestartPolicy{
|
||||||
Name: mapRestartPolicyCondition(split[0]),
|
Name: mapRestartPolicyCondition(name),
|
||||||
MaximumRetryCount: attempts,
|
MaximumRetryCount: attempts,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user