selectWorkflowNonInteractive provides a fallback for non-TTY environments
(workflows []WorkflowOption)
| 208 | |
| 209 | // selectWorkflowNonInteractive provides a fallback for non-TTY environments |
| 210 | func selectWorkflowNonInteractive(workflows []WorkflowOption) (*WorkflowOption, error) { |
| 211 | runInteractiveLog.Printf("Non-TTY detected, showing text list: %d workflows", len(workflows)) |
| 212 | |
| 213 | fmt.Fprintf(os.Stderr, "\nSelect a workflow to run:\n\n") |
| 214 | for i, wf := range workflows { |
| 215 | fmt.Fprintf(os.Stderr, " %d) %s\n", i+1, wf.Name) |
| 216 | } |
| 217 | fmt.Fprintf(os.Stderr, "\nSelect (1-%d): ", len(workflows)) |
| 218 | |
| 219 | var choice int |
| 220 | _, err := fmt.Scanf("%d", &choice) |
| 221 | if err != nil { |
| 222 | return nil, fmt.Errorf("invalid input: %w", err) |
| 223 | } |
| 224 | |
| 225 | if choice < 1 || choice > len(workflows) { |
| 226 | return nil, fmt.Errorf("selection out of range (must be 1-%d)", len(workflows)) |
| 227 | } |
| 228 | |
| 229 | selectedWorkflow := &workflows[choice-1] |
| 230 | runInteractiveLog.Printf("Selected workflow from text list: %s", selectedWorkflow.Name) |
| 231 | return selectedWorkflow, nil |
| 232 | } |
| 233 | |
| 234 | // showWorkflowInfo displays information about the selected workflow |
| 235 | func showWorkflowInfo(wf *WorkflowOption) { |
no test coverage detected