bashly 0.8.0 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/lib/bashly/commands/generate.rb +40 -4
  3. data/lib/bashly/concerns/completions.rb +60 -35
  4. data/lib/bashly/concerns/renderable.rb +19 -6
  5. data/lib/bashly/concerns/validation_helpers.rb +9 -3
  6. data/lib/bashly/config_validator.rb +19 -2
  7. data/lib/bashly/extensions/array.rb +2 -2
  8. data/lib/bashly/extensions/string.rb +2 -2
  9. data/lib/bashly/script/command.rb +127 -19
  10. data/lib/bashly/script/flag.rb +4 -2
  11. data/lib/bashly/templates/strings.yml +1 -0
  12. data/lib/bashly/version.rb +1 -1
  13. data/lib/bashly/views/README.md +6 -0
  14. data/lib/bashly/views/argument/usage.gtx +15 -0
  15. data/lib/bashly/views/argument/validations.gtx +11 -0
  16. data/lib/bashly/views/command/catch_all_filter.gtx +10 -0
  17. data/lib/bashly/views/command/command_fallback.gtx +42 -0
  18. data/lib/bashly/views/command/command_filter.gtx +29 -0
  19. data/lib/bashly/views/command/command_functions.gtx +5 -0
  20. data/lib/bashly/views/command/default_assignments.gtx +13 -0
  21. data/lib/bashly/views/command/default_initialize_script.gtx +7 -0
  22. data/lib/bashly/views/command/default_root_script.gtx +4 -0
  23. data/lib/bashly/views/command/default_script.gtx +5 -0
  24. data/lib/bashly/views/command/dependencies_filter.gtx +10 -0
  25. data/lib/bashly/views/command/environment_variables_filter.gtx +18 -0
  26. data/lib/bashly/views/command/fixed_flags_filter.gtx +20 -0
  27. data/lib/bashly/views/command/footer.gtx +5 -0
  28. data/lib/bashly/views/command/function.gtx +6 -0
  29. data/lib/bashly/views/command/initialize.gtx +12 -0
  30. data/lib/bashly/views/command/inspect_args.gtx +21 -0
  31. data/lib/bashly/views/command/long_usage.gtx +13 -0
  32. data/lib/bashly/views/command/master_script.gtx +17 -0
  33. data/lib/bashly/views/command/normalize_input.gtx +25 -0
  34. data/lib/bashly/views/command/parse_requirements.gtx +26 -0
  35. data/lib/bashly/views/command/parse_requirements_case.gtx +11 -0
  36. data/lib/bashly/views/command/parse_requirements_case_catch_all.gtx +23 -0
  37. data/lib/bashly/views/command/parse_requirements_case_repeatable.gtx +24 -0
  38. data/lib/bashly/views/command/parse_requirements_case_simple.gtx +25 -0
  39. data/lib/bashly/views/command/parse_requirements_while.gtx +33 -0
  40. data/lib/bashly/views/command/required_args_filter.gtx +13 -0
  41. data/lib/bashly/views/command/required_flags_filter.gtx +12 -0
  42. data/lib/bashly/views/command/root_command.gtx +6 -0
  43. data/lib/bashly/views/command/run.gtx +28 -0
  44. data/lib/bashly/views/command/usage.gtx +50 -0
  45. data/lib/bashly/views/command/usage_args.gtx +20 -0
  46. data/lib/bashly/views/command/usage_commands.gtx +18 -0
  47. data/lib/bashly/views/command/usage_environment_variables.gtx +10 -0
  48. data/lib/bashly/views/command/usage_examples.gtx +10 -0
  49. data/lib/bashly/views/command/usage_fixed_flags.gtx +13 -0
  50. data/lib/bashly/views/command/usage_flags.gtx +7 -0
  51. data/lib/bashly/views/command/user_filter.gtx +13 -0
  52. data/lib/bashly/views/command/user_lib.gtx +11 -0
  53. data/lib/bashly/views/command/version_command.gtx +6 -0
  54. data/lib/bashly/views/command/whitelist_filter.gtx +41 -0
  55. data/lib/bashly/views/environment_variable/usage.gtx +11 -0
  56. data/lib/bashly/views/flag/case.gtx +6 -0
  57. data/lib/bashly/views/flag/case_arg.gtx +25 -0
  58. data/lib/bashly/views/flag/case_no_arg.gtx +11 -0
  59. data/lib/bashly/views/flag/conflicts.gtx +22 -0
  60. data/lib/bashly/views/flag/usage.gtx +15 -0
  61. data/lib/bashly/views/flag/validations.gtx +11 -0
  62. data/lib/bashly/views/wrapper/bash3_bouncer.gtx +7 -0
  63. data/lib/bashly/views/wrapper/header.gtx +5 -0
  64. data/lib/bashly/views/wrapper/wrapper.gtx +8 -0
  65. metadata +91 -62
  66. data/lib/bashly/concerns/command_scopes.rb +0 -68
  67. data/lib/bashly/views/argument/usage.erb +0 -10
  68. data/lib/bashly/views/argument/validations.erb +0 -8
  69. data/lib/bashly/views/command/catch_all_filter.erb +0 -7
  70. data/lib/bashly/views/command/command_fallback.erb +0 -45
  71. data/lib/bashly/views/command/command_filter.erb +0 -22
  72. data/lib/bashly/views/command/command_functions.erb +0 -4
  73. data/lib/bashly/views/command/default_assignments.erb +0 -7
  74. data/lib/bashly/views/command/default_initialize_script.erb +0 -6
  75. data/lib/bashly/views/command/default_root_script.erb +0 -3
  76. data/lib/bashly/views/command/default_script.erb +0 -4
  77. data/lib/bashly/views/command/dependencies_filter.erb +0 -9
  78. data/lib/bashly/views/command/environment_variables_filter.erb +0 -14
  79. data/lib/bashly/views/command/fixed_flags_filter.erb +0 -24
  80. data/lib/bashly/views/command/footer.erb +0 -3
  81. data/lib/bashly/views/command/function.erb +0 -4
  82. data/lib/bashly/views/command/initialize.erb +0 -8
  83. data/lib/bashly/views/command/inspect_args.erb +0 -19
  84. data/lib/bashly/views/command/master_script.erb +0 -14
  85. data/lib/bashly/views/command/normalize_input.erb +0 -24
  86. data/lib/bashly/views/command/parse_requirements.erb +0 -22
  87. data/lib/bashly/views/command/parse_requirements_case.erb +0 -8
  88. data/lib/bashly/views/command/parse_requirements_case_catch_all.erb +0 -18
  89. data/lib/bashly/views/command/parse_requirements_case_repeatable.erb +0 -18
  90. data/lib/bashly/views/command/parse_requirements_case_simple.erb +0 -18
  91. data/lib/bashly/views/command/parse_requirements_while.erb +0 -26
  92. data/lib/bashly/views/command/required_args_filter.erb +0 -7
  93. data/lib/bashly/views/command/required_flags_filter.erb +0 -7
  94. data/lib/bashly/views/command/root_command.erb +0 -4
  95. data/lib/bashly/views/command/run.erb +0 -23
  96. data/lib/bashly/views/command/usage.erb +0 -50
  97. data/lib/bashly/views/command/usage_args.erb +0 -14
  98. data/lib/bashly/views/command/usage_commands.erb +0 -18
  99. data/lib/bashly/views/command/usage_environment_variables.erb +0 -6
  100. data/lib/bashly/views/command/usage_examples.erb +0 -7
  101. data/lib/bashly/views/command/usage_fixed_flags.erb +0 -17
  102. data/lib/bashly/views/command/usage_flags.erb +0 -4
  103. data/lib/bashly/views/command/user_filter.erb +0 -11
  104. data/lib/bashly/views/command/user_lib.erb +0 -6
  105. data/lib/bashly/views/command/version_command.erb +0 -4
  106. data/lib/bashly/views/command/whitelist_filter.erb +0 -33
  107. data/lib/bashly/views/environment_variable/usage.erb +0 -7
  108. data/lib/bashly/views/flag/case.erb +0 -4
  109. data/lib/bashly/views/flag/case_arg.erb +0 -19
  110. data/lib/bashly/views/flag/case_no_arg.erb +0 -8
  111. data/lib/bashly/views/flag/conflicts.erb +0 -18
  112. data/lib/bashly/views/flag/usage.erb +0 -10
  113. data/lib/bashly/views/flag/validations.erb +0 -8
  114. data/lib/bashly/views/wrapper/bash3_bouncer.erb +0 -5
  115. data/lib/bashly/views/wrapper/header.erb +0 -4
  116. data/lib/bashly/views/wrapper/wrapper.erb +0 -6
@@ -0,0 +1,41 @@
1
+ if whitelisted_args.any? or whitelisted_flags.any?
2
+ = view_marker
3
+
4
+ whitelisted_args.each do |arg|
5
+ if arg.repeatable
6
+ > eval "input_array=(${args[{{ arg.name }}]})"
7
+ > for i in "${input_array[@]}"; do
8
+ > if [[ ! $i =~ ^({{ arg.allowed.join '|' }})$ ]]; then
9
+ > printf "%s\n" "{{ strings[:disallowed_argument] % { name: arg.name, allowed: arg.allowed.join(', ') } }}"
10
+ > exit 1
11
+ > fi
12
+ > done
13
+
14
+ else
15
+ > if [[ ! ${args[{{ arg.name }}]} =~ ^({{ arg.allowed.join '|' }})$ ]]; then
16
+ > printf "%s\n" "{{ strings[:disallowed_argument] % { name: arg.name, allowed: arg.allowed.join(', ') } }}"
17
+ > exit 1
18
+ > fi
19
+
20
+ end
21
+ end
22
+
23
+ whitelisted_flags.each do |flag|
24
+ if flag.repeatable
25
+ > eval "input_array=(${args[{{ flag.name }}]})"
26
+ > for i in "${input_array[@]}"; do
27
+ > if [[ ! $i =~ ^({{ flag.allowed.join '|' }})$ ]]; then
28
+ > printf "%s\n" "{{ strings[:disallowed_flag] % { name: flag.name, allowed: flag.allowed.join(', ') } }}"
29
+ > exit 1
30
+ > fi
31
+ > done
32
+
33
+ else
34
+ > if [[ ! ${args[{{ flag.name }}]} =~ ^({{ flag.allowed.join '|' }})$ ]]; then
35
+ > printf "%s\n" "{{ strings[:disallowed_flag] % { name: flag.name, allowed: flag.allowed.join(', ') } }}"
36
+ > exit 1
37
+ > fi
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,11 @@
1
+ = view_marker
2
+
3
+ > echo " {{ usage_string extended: true }}"
4
+ > printf "{{ help.wrap(76).indent(4).sanitize_for_print }}\n"
5
+
6
+ if default
7
+ > printf " {{ strings[:default] % { value: default } }}\n"
8
+ end
9
+
10
+ > echo
11
+ >
@@ -0,0 +1,6 @@
1
+ = view_marker
2
+
3
+ > {{ aliases.join " | " }} )
4
+ = render(:conflicts).indent 2
5
+ = render(arg ? :case_arg : :case_no_arg).indent 2
6
+ >
@@ -0,0 +1,25 @@
1
+ = view_marker
2
+
3
+ > if [[ -n ${2+x} ]]; then
4
+ = render(:validations).indent 2
5
+
6
+ if repeatable
7
+ > if [[ -z ${args[{{ name }}]+x} ]]; then
8
+ > args[{{ name }}]="\"$2\""
9
+ > else
10
+ > args[{{ name }}]="${args[{{ name }}]} \"$2\""
11
+ > fi
12
+
13
+ else
14
+ > args[{{ name }}]="$2"
15
+
16
+ end
17
+
18
+ > shift
19
+ > shift
20
+ > else
21
+ > printf "%s\n" "{{ strings[:flag_requires_an_argument] % { name: name, usage: usage_string } }}"
22
+ > exit 1
23
+ > fi
24
+ > ;;
25
+ >
@@ -0,0 +1,11 @@
1
+ = view_marker
2
+
3
+ if repeatable
4
+ > (( args[<%= name %>]+=1 ))
5
+ else
6
+ > args[<%= name %>]=1
7
+ end
8
+
9
+ > shift
10
+ > ;;
11
+ >
@@ -0,0 +1,22 @@
1
+ if conflicts
2
+
3
+ = view_marker
4
+
5
+ if conflicts.count == 1
6
+ > if [[ -n "${args[{{ conflicts.first }}]:-}" ]]; then
7
+ > printf "{{ strings[:conflicting_flags] }}\n" "$key" "{{ conflicts.first }}"
8
+ > exit 1
9
+ > fi
10
+ >
11
+
12
+ else
13
+ > for conflict in {{ conflicts.join ' ' }}; do
14
+ > if [[ -n "${args[$conflict]:-}" ]]; then
15
+ > printf "{{ strings[:conflicting_flags] }}\n" "$key" "$conflict"
16
+ > exit 1
17
+ > fi
18
+ > done
19
+ >
20
+
21
+ end
22
+ end
@@ -0,0 +1,15 @@
1
+ = view_marker
2
+
3
+ > echo " {{ usage_string extended: true }}"
4
+ > printf "{{ help.wrap(76).indent(4).sanitize_for_print }}\n"
5
+
6
+ if allowed
7
+ > printf " {{ strings[:allowed] % { values: allowed.join(', ') } }}\n"
8
+ end
9
+
10
+ if default
11
+ > printf " {{ strings[:default] % { value: default } }}\n"
12
+ end
13
+
14
+ > echo
15
+ >
@@ -0,0 +1,11 @@
1
+ if validate
2
+
3
+ = view_marker
4
+
5
+ > if [[ -n $(validate_{{ validate }} "$2") ]]; then
6
+ > printf "{{ strings[:validation_error] }}\n" "{{ usage_string }}" "$(validate_{{ validate }} "$2")"
7
+ > exit 1
8
+ > fi
9
+ >
10
+
11
+ end
@@ -0,0 +1,7 @@
1
+ = view_marker
2
+
3
+ > if [[ "${BASH_VERSINFO:-0}" -lt 4 ]]; then
4
+ > printf "{{ strings[:unsupported_bash_version] }}\n"
5
+ > exit 1
6
+ > fi
7
+ >
@@ -0,0 +1,5 @@
1
+ > #!/usr/bin/env bash
2
+ > # This script was generated by bashly {{ Bashly::VERSION }} (https://bashly.dannyb.co)
3
+ > # Modifying it manually is not recommended
4
+ >
5
+ >
@@ -0,0 +1,8 @@
1
+ = view_marker
2
+
3
+ > {{ function_name }}() {
4
+ = body.indent 2
5
+ > }
6
+ >
7
+ > (return 0 2>/dev/null) || {{ function_name }} "$@"
8
+ >
metadata CHANGED
@@ -1,43 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bashly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-12 00:00:00.000000000 Z
11
+ date: 2022-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: colsole
14
+ name: completely
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.6'
19
+ version: 0.4.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.6'
26
+ version: 0.4.3
27
27
  - !ruby/object:Gem::Dependency
28
- name: completely
28
+ name: gtx
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: colsole
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '0.3'
47
+ version: '0.7'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '0.3'
54
+ version: '0.7'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: mister_bin
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +72,28 @@ dependencies:
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '0.1'
75
+ version: '0.2'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: filewatcher
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.1'
62
90
  type: :runtime
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
- version: '0.1'
96
+ version: '1.1'
69
97
  description: Generate bash command line tools using YAML configuration
70
98
  email: db@dannyben.com
71
99
  executables:
@@ -84,7 +112,6 @@ files:
84
112
  - lib/bashly/commands/preview.rb
85
113
  - lib/bashly/commands/validate.rb
86
114
  - lib/bashly/concerns/asset_helper.rb
87
- - lib/bashly/concerns/command_scopes.rb
88
115
  - lib/bashly/concerns/completions.rb
89
116
  - lib/bashly/concerns/renderable.rb
90
117
  - lib/bashly/concerns/validation_helpers.rb
@@ -127,56 +154,58 @@ files:
127
154
  - lib/bashly/templates/strings.yml
128
155
  - lib/bashly/templates/test/approvals.bash
129
156
  - lib/bashly/version.rb
130
- - lib/bashly/views/argument/usage.erb
131
- - lib/bashly/views/argument/validations.erb
132
- - lib/bashly/views/command/catch_all_filter.erb
133
- - lib/bashly/views/command/command_fallback.erb
134
- - lib/bashly/views/command/command_filter.erb
135
- - lib/bashly/views/command/command_functions.erb
136
- - lib/bashly/views/command/default_assignments.erb
137
- - lib/bashly/views/command/default_initialize_script.erb
138
- - lib/bashly/views/command/default_root_script.erb
139
- - lib/bashly/views/command/default_script.erb
140
- - lib/bashly/views/command/dependencies_filter.erb
141
- - lib/bashly/views/command/environment_variables_filter.erb
142
- - lib/bashly/views/command/fixed_flags_filter.erb
143
- - lib/bashly/views/command/footer.erb
144
- - lib/bashly/views/command/function.erb
145
- - lib/bashly/views/command/initialize.erb
146
- - lib/bashly/views/command/inspect_args.erb
147
- - lib/bashly/views/command/master_script.erb
148
- - lib/bashly/views/command/normalize_input.erb
149
- - lib/bashly/views/command/parse_requirements.erb
150
- - lib/bashly/views/command/parse_requirements_case.erb
151
- - lib/bashly/views/command/parse_requirements_case_catch_all.erb
152
- - lib/bashly/views/command/parse_requirements_case_repeatable.erb
153
- - lib/bashly/views/command/parse_requirements_case_simple.erb
154
- - lib/bashly/views/command/parse_requirements_while.erb
155
- - lib/bashly/views/command/required_args_filter.erb
156
- - lib/bashly/views/command/required_flags_filter.erb
157
- - lib/bashly/views/command/root_command.erb
158
- - lib/bashly/views/command/run.erb
159
- - lib/bashly/views/command/usage.erb
160
- - lib/bashly/views/command/usage_args.erb
161
- - lib/bashly/views/command/usage_commands.erb
162
- - lib/bashly/views/command/usage_environment_variables.erb
163
- - lib/bashly/views/command/usage_examples.erb
164
- - lib/bashly/views/command/usage_fixed_flags.erb
165
- - lib/bashly/views/command/usage_flags.erb
166
- - lib/bashly/views/command/user_filter.erb
167
- - lib/bashly/views/command/user_lib.erb
168
- - lib/bashly/views/command/version_command.erb
169
- - lib/bashly/views/command/whitelist_filter.erb
170
- - lib/bashly/views/environment_variable/usage.erb
171
- - lib/bashly/views/flag/case.erb
172
- - lib/bashly/views/flag/case_arg.erb
173
- - lib/bashly/views/flag/case_no_arg.erb
174
- - lib/bashly/views/flag/conflicts.erb
175
- - lib/bashly/views/flag/usage.erb
176
- - lib/bashly/views/flag/validations.erb
177
- - lib/bashly/views/wrapper/bash3_bouncer.erb
178
- - lib/bashly/views/wrapper/header.erb
179
- - lib/bashly/views/wrapper/wrapper.erb
157
+ - lib/bashly/views/README.md
158
+ - lib/bashly/views/argument/usage.gtx
159
+ - lib/bashly/views/argument/validations.gtx
160
+ - lib/bashly/views/command/catch_all_filter.gtx
161
+ - lib/bashly/views/command/command_fallback.gtx
162
+ - lib/bashly/views/command/command_filter.gtx
163
+ - lib/bashly/views/command/command_functions.gtx
164
+ - lib/bashly/views/command/default_assignments.gtx
165
+ - lib/bashly/views/command/default_initialize_script.gtx
166
+ - lib/bashly/views/command/default_root_script.gtx
167
+ - lib/bashly/views/command/default_script.gtx
168
+ - lib/bashly/views/command/dependencies_filter.gtx
169
+ - lib/bashly/views/command/environment_variables_filter.gtx
170
+ - lib/bashly/views/command/fixed_flags_filter.gtx
171
+ - lib/bashly/views/command/footer.gtx
172
+ - lib/bashly/views/command/function.gtx
173
+ - lib/bashly/views/command/initialize.gtx
174
+ - lib/bashly/views/command/inspect_args.gtx
175
+ - lib/bashly/views/command/long_usage.gtx
176
+ - lib/bashly/views/command/master_script.gtx
177
+ - lib/bashly/views/command/normalize_input.gtx
178
+ - lib/bashly/views/command/parse_requirements.gtx
179
+ - lib/bashly/views/command/parse_requirements_case.gtx
180
+ - lib/bashly/views/command/parse_requirements_case_catch_all.gtx
181
+ - lib/bashly/views/command/parse_requirements_case_repeatable.gtx
182
+ - lib/bashly/views/command/parse_requirements_case_simple.gtx
183
+ - lib/bashly/views/command/parse_requirements_while.gtx
184
+ - lib/bashly/views/command/required_args_filter.gtx
185
+ - lib/bashly/views/command/required_flags_filter.gtx
186
+ - lib/bashly/views/command/root_command.gtx
187
+ - lib/bashly/views/command/run.gtx
188
+ - lib/bashly/views/command/usage.gtx
189
+ - lib/bashly/views/command/usage_args.gtx
190
+ - lib/bashly/views/command/usage_commands.gtx
191
+ - lib/bashly/views/command/usage_environment_variables.gtx
192
+ - lib/bashly/views/command/usage_examples.gtx
193
+ - lib/bashly/views/command/usage_fixed_flags.gtx
194
+ - lib/bashly/views/command/usage_flags.gtx
195
+ - lib/bashly/views/command/user_filter.gtx
196
+ - lib/bashly/views/command/user_lib.gtx
197
+ - lib/bashly/views/command/version_command.gtx
198
+ - lib/bashly/views/command/whitelist_filter.gtx
199
+ - lib/bashly/views/environment_variable/usage.gtx
200
+ - lib/bashly/views/flag/case.gtx
201
+ - lib/bashly/views/flag/case_arg.gtx
202
+ - lib/bashly/views/flag/case_no_arg.gtx
203
+ - lib/bashly/views/flag/conflicts.gtx
204
+ - lib/bashly/views/flag/usage.gtx
205
+ - lib/bashly/views/flag/validations.gtx
206
+ - lib/bashly/views/wrapper/bash3_bouncer.gtx
207
+ - lib/bashly/views/wrapper/header.gtx
208
+ - lib/bashly/views/wrapper/wrapper.gtx
180
209
  homepage: https://github.com/dannyben/bashly
181
210
  licenses:
182
211
  - MIT
@@ -200,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
229
  - !ruby/object:Gem::Version
201
230
  version: '0'
202
231
  requirements: []
203
- rubygems_version: 3.3.3
232
+ rubygems_version: 3.3.14
204
233
  signing_key:
205
234
  specification_version: 4
206
235
  summary: Bash Command Line Tool Generator
@@ -1,68 +0,0 @@
1
- module Bashly
2
- # This is a `Command` concern responsible for providing additional scopes.
3
- module CommandScopes
4
- # Returns only the names of the Commands
5
- def command_names
6
- commands.map &:name
7
- end
8
-
9
- # Returns a flat array containing all the commands in this tree.
10
- # This includes self + children + grandchildres + ...
11
- def deep_commands
12
- result = []
13
- commands.each do |command|
14
- result << command
15
- if command.commands.any?
16
- result += command.deep_commands
17
- end
18
- end
19
- result
20
- end
21
-
22
- # If any of this command's subcommands has the default option set to
23
- # true, this default command will be returned, nil otherwise.
24
- def default_command
25
- commands.find { |c| c.default }
26
- end
27
-
28
- # Returns an array of all the default Args
29
- def default_args
30
- args.select &:default
31
- end
32
-
33
- # Returns an array of all the default Environment Variables
34
- def default_environment_variables
35
- environment_variables.select &:default
36
- end
37
-
38
- # Returns an array of all the default Flags
39
- def default_flags
40
- flags.select &:default
41
- end
42
-
43
- # Returns an array of all the required Arguments
44
- def required_args
45
- args.select &:required
46
- end
47
-
48
- # Returns an array of all the required EnvironmentVariables
49
- def required_environment_variables
50
- environment_variables.select &:required
51
- end
52
-
53
- # Returns an array of all the required Flags
54
- def required_flags
55
- flags.select &:required
56
- end
57
-
58
- # Returns an array of all the args with a whitelist
59
- def whitelisted_args
60
- args.select &:allowed
61
- end
62
-
63
- # Returns an array of all the flags with a whitelist arg
64
- def whitelisted_flags
65
- flags.select &:allowed
66
- end
67
- end
68
- end
@@ -1,10 +0,0 @@
1
- <%= view_marker %>
2
- echo " <%= label %>"
3
- printf "<%= help.wrap(76).indent(4).sanitize_for_print %>\n"
4
- % if allowed
5
- printf " <%= strings[:allowed] % { values: allowed.join(', ') } -%>\n"
6
- % end
7
- % if default
8
- printf " <%= strings[:default] % { value: default } -%>\n"
9
- % end
10
- echo
@@ -1,8 +0,0 @@
1
- <%= view_marker %>
2
- % if validate
3
- if [[ -n $(validate_<%= validate %> "$1") ]]; then
4
- printf "<%= strings[:validation_error] %>\n" "<%= name.upcase %>" "$(validate_<%= validate %> "$1")"
5
- exit 1
6
- fi
7
-
8
- % end
@@ -1,7 +0,0 @@
1
- <%= view_marker %>
2
- % if catch_all.required?
3
- if [[ ${#other_args[@]} -eq 0 ]]; then
4
- printf "<%= strings[:missing_required_argument] % { arg: catch_all.label, usage: usage_string } %>\n"
5
- exit 1
6
- fi
7
- % end
@@ -1,45 +0,0 @@
1
- <%= view_marker %>
2
- % if default_command
3
- "" )
4
- <%= function_name %>_usage
5
- exit 1
6
- ;;
7
-
8
- * )
9
- action="<%= default_command.name %>"
10
- <%= default_command.function_name %>_parse_requirements "$@"
11
- shift $#
12
- ;;
13
- % elsif extensible.is_a? String
14
- "" )
15
- <%= function_name %>_usage
16
- exit 1
17
- ;;
18
-
19
- * )
20
- if [[ -x "$(command -v "<%= extensible %>")" ]]; then
21
- exec <%= extensible %> "$@"
22
- else
23
- <%= function_name %>_usage
24
- exit 1
25
- fi
26
- % elsif extensible
27
- "" )
28
- <%= function_name %>_usage
29
- exit 1
30
- ;;
31
-
32
- * )
33
- if [[ -x "$(command -v "<%= function_name %>-$action")" ]]; then
34
- shift
35
- exec "<%= function_name %>-$action" "$@"
36
- else
37
- <%= function_name %>_usage
38
- exit 1
39
- fi
40
- % else
41
- * )
42
- <%= function_name %>_usage
43
- exit 1
44
- ;;
45
- % end
@@ -1,22 +0,0 @@
1
- <%= view_marker %>
2
- % if commands.any?
3
- action=${1:-}
4
-
5
- case $action in
6
- -* )
7
- ;;
8
-
9
- % commands.each do |command|
10
- <%= command.aliases.join " | " %> )
11
- action="<%= command.name %>"
12
- shift
13
- <%= command.function_name %>_parse_requirements "$@"
14
- shift $#
15
- ;;
16
-
17
- % end
18
- <%= render :command_fallback %>
19
- esac
20
- % else
21
- action="<%= action_name %>"
22
- % end
@@ -1,4 +0,0 @@
1
- <%= view_marker %>
2
- % deep_commands.each do |command|
3
- <%= command.render :function unless command.commands.any? %>
4
- % end
@@ -1,7 +0,0 @@
1
- <%= view_marker %>
2
- % default_args.each do |arg|
3
- [[ -n ${args[<%= arg.name %>]:-} ]] || args[<%= arg.name %>]="<%= arg.default %>"
4
- % end
5
- % default_flags.each do |flag|
6
- [[ -n ${args[<%= flag.long %>]:-} ]] || args[<%= flag.long %>]="<%= flag.default %>"
7
- % end
@@ -1,6 +0,0 @@
1
- ## Code here runs inside the initialize() function
2
- ## Use it for anything that you need to run before any other function, like
3
- ## setting environment vairables:
4
- ## CONFIG_FILE=settings.ini
5
- ##
6
- ## Feel free to empty (but not delete) this file.
@@ -1,3 +0,0 @@
1
- echo "# this file is located in '<%= "#{Settings.source_dir}/#{filename}" %>'"
2
- echo "# you can edit it freely and regenerate (it will not be overwritten)"
3
- inspect_args
@@ -1,4 +0,0 @@
1
- echo "# this file is located in '<%= "#{Settings.source_dir}/#{filename}" %>'"
2
- echo "# code for '<%= full_name %>' goes here"
3
- echo "# you can edit it freely and regenerate (it will not be overwritten)"
4
- inspect_args
@@ -1,9 +0,0 @@
1
- <%= view_marker %>
2
- % if dependencies
3
- % dependencies.each do |dependency|
4
- if ! [[ -x "$(command -v <%= dependency %>)" ]]; then
5
- printf "<%= strings[:missing_dependency] % { dependency: dependency } -%>\n"
6
- exit 1
7
- fi
8
- % end
9
- % end
@@ -1,14 +0,0 @@
1
- <%= view_marker %>
2
- % if default_environment_variables.any?
3
- % default_environment_variables.each do |env_var|
4
- export <%= env_var.name.upcase %>="${<%= env_var.name.upcase %>:-<%= env_var.default %>}"
5
- % end
6
- % end
7
- % if required_environment_variables.any?
8
- % required_environment_variables.each do |env_var|
9
- if [[ -z "${<%= env_var.name.upcase %>:-}" ]]; then
10
- printf "<%= strings[:missing_required_environment_variable] % { var: env_var.name.upcase } %>\n"
11
- exit 1
12
- fi
13
- % end
14
- % end
@@ -1,24 +0,0 @@
1
- <%= view_marker %>
2
- case "${1:-}" in
3
- % if root_command?
4
- % if short_flag_exist? "-v"
5
- --version )
6
- % else
7
- --version | -v )
8
- % end
9
- version_command
10
- exit
11
- ;;
12
-
13
- % end
14
- % if short_flag_exist? "-h"
15
- --help )
16
- % else
17
- --help | -h )
18
- % end
19
- long_usage=yes
20
- <%= function_name %>_usage
21
- exit
22
- ;;
23
-
24
- esac
@@ -1,3 +0,0 @@
1
- <%= view_marker %>
2
- printf "<%= footer.gsub("\n", '\n').gsub('"', '\"') %>\n"
3
- echo