extractWorkdirStringFlag pulls a `--flag val` or `--flag=val` pair out of args, returning (value, remaining, error). Returns ("", args, nil) if absent. Unique name to avoid collisions with parallel-agent helpers.
(args []string, flagName string)
| 220 | // args, returning (value, remaining, error). Returns ("", args, nil) if |
| 221 | // absent. Unique name to avoid collisions with parallel-agent helpers. |
| 222 | func extractWorkdirStringFlag(args []string, flagName string) (string, []string, error) { |
| 223 | out := make([]string, 0, len(args)) |
| 224 | value := "" |
| 225 | i := 0 |
| 226 | for i < len(args) { |
| 227 | a := args[i] |
| 228 | if a == flagName { |
| 229 | if i+1 >= len(args) { |
| 230 | return "", nil, fmt.Errorf("flag %s requires a value", flagName) |
| 231 | } |
| 232 | value = args[i+1] |
| 233 | i += 2 |
| 234 | continue |
| 235 | } |
| 236 | if strings.HasPrefix(a, flagName+"=") { |
| 237 | value = strings.TrimPrefix(a, flagName+"=") |
| 238 | i++ |
| 239 | continue |
| 240 | } |
| 241 | out = append(out, a) |
| 242 | i++ |
| 243 | } |
| 244 | return value, out, nil |
| 245 | } |
| 246 | |
| 247 | // cmdWorkdirRemove deletes a workdir row. Does not touch the filesystem |
| 248 | // and does not null out tasks.work_dir. |