Module: LanguageOperator::CLI::Helpers::ValidationHelper
- Included in:
- Wizards::ModelWizard
- Defined in:
- lib/language_operator/cli/helpers/validation_helper.rb
Overview
Common input validation patterns for CLI wizards
Provides validation helpers for URLs, Kubernetes names, emails, ports, etc. Uses UxHelper for prompt access.
Instance Method Summary collapse
-
#ask_k8s_name(question, default: nil) ⇒ String?
Ask for a Kubernetes-compatible resource name.
-
#ask_secret(question, required: true) ⇒ String?
Ask for a masked input (like API keys or passwords).
-
#ask_select(question, choices, per_page: 10) ⇒ Object?
Ask for selection from a list.
-
#ask_url(question, default: nil, required: true) ⇒ String?
Ask for a URL with validation.
-
#ask_yes_no(question, default: false) ⇒ Boolean?
Ask a yes/no question.
Instance Method Details
#ask_k8s_name(question, default: nil) ⇒ String?
Ask for a Kubernetes-compatible resource name
45 46 47 48 49 50 51 52 53 |
# File 'lib/language_operator/cli/helpers/validation_helper.rb', line 45 def ask_k8s_name(question, default: nil) prompt.ask(question, default: default) do |q| q.required true q.validate(/^[a-z0-9]([-a-z0-9]*[a-z0-9])?$/, 'Must be lowercase alphanumeric with hyphens') q.modify :strip, :down end rescue TTY::Reader::InputInterrupt nil end |
#ask_secret(question, required: true) ⇒ String?
Ask for a masked input (like API keys or passwords)
60 61 62 63 64 65 66 |
# File 'lib/language_operator/cli/helpers/validation_helper.rb', line 60 def ask_secret(question, required: true) prompt.mask(question) do |q| q.required required end rescue TTY::Reader::InputInterrupt nil end |
#ask_select(question, choices, per_page: 10) ⇒ Object?
Ask for selection from a list
85 86 87 88 89 |
# File 'lib/language_operator/cli/helpers/validation_helper.rb', line 85 def ask_select(question, choices, per_page: 10) prompt.select(question, choices, per_page: per_page) rescue TTY::Reader::InputInterrupt nil end |
#ask_url(question, default: nil, required: true) ⇒ String?
Ask for a URL with validation
30 31 32 33 34 35 36 37 38 |
# File 'lib/language_operator/cli/helpers/validation_helper.rb', line 30 def ask_url(question, default: nil, required: true) prompt.ask(question, default: default) do |q| q.required required q.validate(%r{^https?://}) q.[:valid?] = 'Must be a valid HTTP(S) URL' end rescue TTY::Reader::InputInterrupt nil end |
#ask_yes_no(question, default: false) ⇒ Boolean?
Ask a yes/no question
73 74 75 76 77 |
# File 'lib/language_operator/cli/helpers/validation_helper.rb', line 73 def ask_yes_no(question, default: false) prompt.yes?(question, default: default) rescue TTY::Reader::InputInterrupt nil end |