replace some uses of strings.Split(N) for strings.Cut

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn
2026-01-22 11:07:29 +01:00
committed by Nicolas De loof
parent fa7549a851
commit c51b1fea29
7 changed files with 31 additions and 38 deletions

View File

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

View File

@@ -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

View File

@@ -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 {

View File

@@ -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

View File

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

View File

@@ -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) {

View File

@@ -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,
} }
} }