From 4d7e6d68abc845330a47252330a25228510346d4 Mon Sep 17 00:00:00 2001 From: Danny Ben Shitrit Date: Thu, 28 Aug 2025 10:34:36 +0000 Subject: [PATCH] - Fix validation running twice for environment variables --- lib/bashly/script/argument.rb | 8 ++++---- lib/bashly/script/environment_variable.rb | 2 +- lib/bashly/script/flag.rb | 2 +- lib/bashly/views/argument/validations.gtx | 10 ++++++---- lib/bashly/views/environment_variable/validations.gtx | 9 ++++++--- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/lib/bashly/script/argument.rb b/lib/bashly/script/argument.rb index 1a325b1b..cb18fe79 100644 --- a/lib/bashly/script/argument.rb +++ b/lib/bashly/script/argument.rb @@ -21,13 +21,13 @@ def default_string end end - def usage_string - required ? label : "[#{label}]" - end - def label repeatable ? "#{name.upcase}..." : name.upcase end + + def usage_string + required ? label : "[#{label}]" + end end end end diff --git a/lib/bashly/script/environment_variable.rb b/lib/bashly/script/environment_variable.rb index 7eb626d9..4e3b08b7 100644 --- a/lib/bashly/script/environment_variable.rb +++ b/lib/bashly/script/environment_variable.rb @@ -6,7 +6,7 @@ class EnvironmentVariable < Base class << self def option_keys @option_keys ||= %i[ - allowed default help name required private validate + allowed default help name private required validate ] end end diff --git a/lib/bashly/script/flag.rb b/lib/bashly/script/flag.rb index 841099f4..2d5bc048 100644 --- a/lib/bashly/script/flag.rb +++ b/lib/bashly/script/flag.rb @@ -10,7 +10,7 @@ class << self def option_keys @option_keys ||= %i[ allowed arg completions conflicts default help long needs - repeatable required short unique validate private + private repeatable required short unique validate ] end end diff --git a/lib/bashly/views/argument/validations.gtx b/lib/bashly/views/argument/validations.gtx index 41e4bf97..758217ab 100644 --- a/lib/bashly/views/argument/validations.gtx +++ b/lib/bashly/views/argument/validations.gtx @@ -14,10 +14,12 @@ if validate > done > fi else - > validation_output="$(validate_{{ validate }} "${args['{{ name }}']:-}")" - > if [[ -v args['{{ name }}'] && -n "$validation_output" ]]; then - > printf "{{ strings[:validation_error] }}\n" "{{ name.upcase }}" "$validation_output" >&2 - > exit 1 + > if [[ -v args['{{ name }}'] ]]; then + > validation_output="$(validate_{{ validate }} "${args['{{ name }}']:-}")" + > if [[ -n "$validation_output" ]]; then + > printf "{{ strings[:validation_error] }}\n" "{{ name.upcase }}" "$validation_output" >&2 + > exit 1 + > fi > fi > end diff --git a/lib/bashly/views/environment_variable/validations.gtx b/lib/bashly/views/environment_variable/validations.gtx index 805536cf..abbf1ebc 100644 --- a/lib/bashly/views/environment_variable/validations.gtx +++ b/lib/bashly/views/environment_variable/validations.gtx @@ -1,9 +1,12 @@ if validate = view_marker - > if [[ -v {{ name.upcase }} && -n $(validate_{{ validate }} "${{ name.upcase }}") ]]; then - > printf "{{ strings[:environment_variable_validation_error] }}\n" "{{ usage_string }}" "$(validate_{{ validate }} "${{ name.upcase }}")" >&2 - > exit 1 + > if [[ -v {{ name.upcase }} ]]; then + > validation_output="$(validate_{{ validate }} "${{ name.upcase }}")" + > if [[ -n "${validation_output}" ]]; then + > printf "{{ strings[:environment_variable_validation_error] }}\n" "{{ usage_string }}" "$validation_output" >&2 + > exit 1 + > fi > fi > end