Skip to content

Commit c51b1fe

Browse files
thaJeztahndeloof
authored andcommitted
replace some uses of strings.Split(N) for strings.Cut
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
1 parent fa7549a commit c51b1fe

7 files changed

Lines changed: 31 additions & 38 deletions

File tree

cmd/compose/create.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -198,12 +198,11 @@ func (opts createOptions) Apply(project *types.Project) error {
198198

199199
func applyScaleOpts(project *types.Project, opts []string) error {
200200
for _, scale := range opts {
201-
split := strings.Split(scale, "=")
202-
if len(split) != 2 {
201+
name, val, ok := strings.Cut(scale, "=")
202+
if !ok || val == "" {
203203
return fmt.Errorf("invalid --scale option %q. Should be SERVICE=NUM", scale)
204204
}
205-
name := split[0]
206-
replicas, err := strconv.Atoi(split[1])
205+
replicas, err := strconv.Atoi(val)
207206
if err != nil {
208207
return err
209208
}

cmd/compose/options.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,9 @@ func extractEnvCLIDefined(cmdEnvs []string) map[string]string {
213213
// Parse command-line environment variables
214214
cmdEnvMap := make(map[string]string)
215215
for _, env := range cmdEnvs {
216-
parts := strings.SplitN(env, "=", 2)
217-
if len(parts) == 2 {
218-
cmdEnvMap[parts[0]] = parts[1]
216+
key, val, ok := strings.Cut(env, "=")
217+
if ok {
218+
cmdEnvMap[key] = val
219219
}
220220
}
221221
return cmdEnvMap

cmd/compose/ps.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,19 @@ func (p *psOptions) parseFilter() error {
5050
if p.Filter == "" {
5151
return nil
5252
}
53-
parts := strings.SplitN(p.Filter, "=", 2)
54-
if len(parts) != 2 {
53+
key, val, ok := strings.Cut(p.Filter, "=")
54+
if !ok {
5555
return errors.New("arguments to --filter should be in form KEY=VAL")
5656
}
57-
switch parts[0] {
57+
switch key {
5858
case "status":
59-
p.Status = append(p.Status, parts[1])
59+
p.Status = append(p.Status, val)
60+
return nil
6061
case "source":
6162
return api.ErrNotImplemented
6263
default:
63-
return fmt.Errorf("unknown filter %s", parts[0])
64+
return fmt.Errorf("unknown filter %s", key)
6465
}
65-
return nil
6666
}
6767

6868
func psCommand(p *ProjectOptions, dockerCli command.Cli, backendOptions *BackendOptions) *cobra.Command {

cmd/compose/run.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -284,11 +284,11 @@ func runRun(ctx context.Context, backend api.Compose, project *types.Project, op
284284

285285
labels := types.Labels{}
286286
for _, s := range options.labels {
287-
parts := strings.SplitN(s, "=", 2)
288-
if len(parts) != 2 {
287+
key, val, ok := strings.Cut(s, "=")
288+
if !ok {
289289
return fmt.Errorf("label must be set as KEY=VALUE")
290290
}
291-
labels[parts[0]] = parts[1]
291+
labels[key] = val
292292
}
293293

294294
var buildForRun *api.BuildOptions

pkg/compose/convergence.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -774,11 +774,10 @@ func (s *composeService) getLinks(ctx context.Context, projectName string, servi
774774
}
775775

776776
for _, rawLink := range service.Links {
777-
linkSplit := strings.Split(rawLink, ":")
778-
linkServiceName := linkSplit[0]
779-
linkName := linkServiceName
780-
if len(linkSplit) == 2 {
781-
linkName = linkSplit[1] // linkName if informed like in: "serviceName:linkName"
777+
// linkName if informed like in: "serviceName[:linkName]"
778+
linkServiceName, linkName, ok := strings.Cut(rawLink, ":")
779+
if !ok {
780+
linkName = linkServiceName
782781
}
783782
cnts, err := getServiceContainers(linkServiceName)
784783
if err != nil {
@@ -810,11 +809,9 @@ func (s *composeService) getLinks(ctx context.Context, projectName string, servi
810809
}
811810

812811
for _, rawExtLink := range service.ExternalLinks {
813-
extLinkSplit := strings.Split(rawExtLink, ":")
814-
externalLink := extLinkSplit[0]
815-
linkName := externalLink
816-
if len(extLinkSplit) == 2 {
817-
linkName = extLinkSplit[1]
812+
externalLink, linkName, ok := strings.Cut(rawExtLink, ":")
813+
if !ok {
814+
linkName = externalLink
818815
}
819816
links = append(links, format(externalLink, linkName))
820817
}

pkg/compose/cp.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -317,15 +317,15 @@ func splitCpArg(arg string) (ctr, path string) {
317317
return "", arg
318318
}
319319

320-
parts := strings.SplitN(arg, ":", 2)
320+
ctr, path, ok := strings.Cut(arg, ":")
321321

322-
if len(parts) == 1 || strings.HasPrefix(parts[0], ".") {
322+
if !ok || strings.HasPrefix(ctr, ".") {
323323
// Either there's no `:` in the arg
324324
// OR it's an explicit local relative path like `./file:name.txt`.
325325
return "", arg
326326
}
327327

328-
return parts[0], parts[1]
328+
return ctr, path
329329
}
330330

331331
func resolveLocalPath(localPath string) (absPath string, err error) {

pkg/compose/create.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -241,11 +241,8 @@ func (s *composeService) getCreateConfigs(ctx context.Context,
241241
} // VOLUMES/MOUNTS/FILESYSTEMS
242242
tmpfs := map[string]string{}
243243
for _, t := range service.Tmpfs {
244-
if arr := strings.SplitN(t, ":", 2); len(arr) > 1 {
245-
tmpfs[arr[0]] = arr[1]
246-
} else {
247-
tmpfs[arr[0]] = ""
248-
}
244+
k, v, _ := strings.Cut(t, ":")
245+
tmpfs[k] = v
249246
}
250247
binds, mounts, err := s.buildContainerVolumes(ctx, *p, service, inherit)
251248
if err != nil {
@@ -563,13 +560,13 @@ func defaultNetworkSettings(project *types.Project,
563560
func getRestartPolicy(service types.ServiceConfig) container.RestartPolicy {
564561
var restart container.RestartPolicy
565562
if service.Restart != "" {
566-
split := strings.Split(service.Restart, ":")
563+
name, num, ok := strings.Cut(service.Restart, ":")
567564
var attempts int
568-
if len(split) > 1 {
569-
attempts, _ = strconv.Atoi(split[1])
565+
if ok {
566+
attempts, _ = strconv.Atoi(num)
570567
}
571568
restart = container.RestartPolicy{
572-
Name: mapRestartPolicyCondition(split[0]),
569+
Name: mapRestartPolicyCondition(name),
573570
MaximumRetryCount: attempts,
574571
}
575572
}

0 commit comments

Comments
 (0)