(ctx devspacecontext.Context, pipeline *latest.Pipeline, setFlags []string)
| 423 | } |
| 424 | |
| 425 | func applyFlags(ctx devspacecontext.Context, pipeline *latest.Pipeline, setFlags []string) (devspacecontext.Context, error) { |
| 426 | defaultFlags := map[string]string{} |
| 427 | for _, flag := range pipeline.Flags { |
| 428 | val, err := GetDefaultValue(flag) |
| 429 | if err != nil { |
| 430 | return nil, err |
| 431 | } |
| 432 | |
| 433 | switch flag.Type { |
| 434 | case latest.PipelineFlagTypeStringArray: |
| 435 | defaultFlags[flag.Name] = fmt.Sprintf("%v", strings.Join(val.([]string), " ")) |
| 436 | default: |
| 437 | defaultFlags[flag.Name] = fmt.Sprintf("%v", val) |
| 438 | } |
| 439 | } |
| 440 | |
| 441 | newFlags := map[string]string{} |
| 442 | for _, v := range setFlags { |
| 443 | splitted := strings.Split(v, "=") |
| 444 | if len(splitted) <= 1 { |
| 445 | return nil, fmt.Errorf("error parsing flag %s: expected format flag=value", v) |
| 446 | } |
| 447 | |
| 448 | flagName := splitted[0] |
| 449 | flagVal := strings.Join(splitted[1:], "=") |
| 450 | flagVals := strings.Join(strings.Split(flagVal, ","), " ") |
| 451 | |
| 452 | if newFlags[flagName] != "" { |
| 453 | newFlags[flagName] = strings.Join([]string{newFlags[flagName], flagVals}, " ") |
| 454 | } else { |
| 455 | newFlags[flagName] = flagVals |
| 456 | } |
| 457 | |
| 458 | } |
| 459 | |
| 460 | for name, value := range defaultFlags { |
| 461 | if _, ok := newFlags[name]; !ok { |
| 462 | newFlags[name] = value |
| 463 | } |
| 464 | } |
| 465 | |
| 466 | return ctx.WithContext(values.WithFlagsMap(ctx.Context(), newFlags)), nil |
| 467 | } |
| 468 | |
| 469 | func (p *pipeline) createJob(configPipeline *latest.Pipeline, id string) (job *Job, err error) { |
| 470 | p.m.Lock() |
no test coverage detected