MCPcopy Create free account
hub / github.com/compozy/agh / parseAutomationRetryFlag

Function parseAutomationRetryFlag

internal/cli/automation.go:1077–1119  ·  view source on GitHub ↗
(raw string)

Source from the content-addressed store, hash-verified

1075}
1076
1077func parseAutomationRetryFlag(raw string) (*automationpkg.RetryConfig, error) {
1078 trimmed := strings.TrimSpace(raw)
1079 if trimmed == "" {
1080 return nil, nil
1081 }
1082
1083 lower := strings.ToLower(trimmed)
1084 var cfg automationpkg.RetryConfig
1085 switch {
1086 case lower == string(automationpkg.RetryStrategyNone):
1087 cfg = automationpkg.DefaultRetryConfig()
1088 case lower == string(automationpkg.RetryStrategyBackoff):
1089 cfg = automationpkg.DefaultBackoffRetryConfig()
1090 case strings.HasPrefix(lower, "backoff:"):
1091 payload := strings.TrimSpace(trimmed[len("backoff:"):])
1092 parts := strings.Split(payload, ":")
1093 if len(parts) != 2 {
1094 return nil, fmt.Errorf(
1095 `cli: invalid retry value %q: use "none", "backoff", or "backoff:<max_retries>:<base_delay>"`,
1096 trimmed,
1097 )
1098 }
1099 maxRetries, err := strconv.Atoi(strings.TrimSpace(parts[0]))
1100 if err != nil {
1101 return nil, fmt.Errorf("cli: invalid retry max_retries %q: %w", parts[0], err)
1102 }
1103 cfg = automationpkg.RetryConfig{
1104 Strategy: automationpkg.RetryStrategyBackoff,
1105 MaxRetries: maxRetries,
1106 BaseDelay: strings.TrimSpace(parts[1]),
1107 }
1108 default:
1109 return nil, fmt.Errorf(
1110 `cli: invalid retry value %q: use "none", "backoff", or "backoff:<max_retries>:<base_delay>"`,
1111 trimmed,
1112 )
1113 }
1114
1115 if err := cfg.Validate(automationRetryKey); err != nil {
1116 return nil, fmt.Errorf("cli: %w", err)
1117 }
1118 return &cfg, nil
1119}
1120
1121func parseAutomationFilterFlags(flags []string) (map[string]string, error) {
1122 if len(flags) == 0 {

Calls 1

ValidateMethod · 0.95

Tested by

no test coverage detected