bashly 0.8.1 → 0.8.4

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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/lib/bashly/commands/generate.rb +40 -4
  3. data/lib/bashly/concerns/renderable.rb +19 -6
  4. data/lib/bashly/config_validator.rb +11 -0
  5. data/lib/bashly/extensions/string.rb +2 -2
  6. data/lib/bashly/script/command.rb +126 -24
  7. data/lib/bashly/templates/strings.yml +1 -0
  8. data/lib/bashly/version.rb +1 -1
  9. data/lib/bashly/views/README.md +6 -0
  10. data/lib/bashly/views/argument/usage.gtx +15 -0
  11. data/lib/bashly/views/argument/validations.gtx +11 -0
  12. data/lib/bashly/views/command/catch_all_filter.gtx +10 -0
  13. data/lib/bashly/views/command/command_fallback.gtx +42 -0
  14. data/lib/bashly/views/command/command_filter.gtx +29 -0
  15. data/lib/bashly/views/command/command_functions.gtx +5 -0
  16. data/lib/bashly/views/command/default_assignments.gtx +13 -0
  17. data/lib/bashly/views/command/default_initialize_script.gtx +7 -0
  18. data/lib/bashly/views/command/default_root_script.gtx +4 -0
  19. data/lib/bashly/views/command/default_script.gtx +5 -0
  20. data/lib/bashly/views/command/dependencies_filter.gtx +10 -0
  21. data/lib/bashly/views/command/environment_variables_filter.gtx +18 -0
  22. data/lib/bashly/views/command/fixed_flags_filter.gtx +20 -0
  23. data/lib/bashly/views/command/footer.gtx +5 -0
  24. data/lib/bashly/views/command/function.gtx +6 -0
  25. data/lib/bashly/views/command/initialize.gtx +12 -0
  26. data/lib/bashly/views/command/inspect_args.gtx +21 -0
  27. data/lib/bashly/views/command/long_usage.gtx +13 -0
  28. data/lib/bashly/views/command/master_script.gtx +17 -0
  29. data/lib/bashly/views/command/normalize_input.gtx +25 -0
  30. data/lib/bashly/views/command/parse_requirements.gtx +26 -0
  31. data/lib/bashly/views/command/parse_requirements_case.gtx +11 -0
  32. data/lib/bashly/views/command/parse_requirements_case_catch_all.gtx +23 -0
  33. data/lib/bashly/views/command/parse_requirements_case_repeatable.gtx +24 -0
  34. data/lib/bashly/views/command/parse_requirements_case_simple.gtx +25 -0
  35. data/lib/bashly/views/command/parse_requirements_while.gtx +33 -0
  36. data/lib/bashly/views/command/required_args_filter.gtx +13 -0
  37. data/lib/bashly/views/command/required_flags_filter.gtx +12 -0
  38. data/lib/bashly/views/command/root_command.gtx +6 -0
  39. data/lib/bashly/views/command/run.gtx +28 -0
  40. data/lib/bashly/views/command/usage.gtx +50 -0
  41. data/lib/bashly/views/command/usage_args.gtx +20 -0
  42. data/lib/bashly/views/command/usage_commands.gtx +18 -0
  43. data/lib/bashly/views/command/usage_environment_variables.gtx +10 -0
  44. data/lib/bashly/views/command/usage_examples.gtx +10 -0
  45. data/lib/bashly/views/command/usage_fixed_flags.gtx +13 -0
  46. data/lib/bashly/views/command/usage_flags.gtx +7 -0
  47. data/lib/bashly/views/command/user_filter.gtx +13 -0
  48. data/lib/bashly/views/command/user_lib.gtx +11 -0
  49. data/lib/bashly/views/command/version_command.gtx +6 -0
  50. data/lib/bashly/views/command/whitelist_filter.gtx +41 -0
  51. data/lib/bashly/views/environment_variable/usage.gtx +11 -0
  52. data/lib/bashly/views/flag/case.gtx +6 -0
  53. data/lib/bashly/views/flag/case_arg.gtx +25 -0
  54. data/lib/bashly/views/flag/case_no_arg.gtx +11 -0
  55. data/lib/bashly/views/flag/conflicts.gtx +22 -0
  56. data/lib/bashly/views/flag/usage.gtx +15 -0
  57. data/lib/bashly/views/flag/validations.gtx +11 -0
  58. data/lib/bashly/views/wrapper/bash3_bouncer.gtx +7 -0
  59. data/lib/bashly/views/wrapper/header.gtx +5 -0
  60. data/lib/bashly/views/wrapper/wrapper.gtx +8 -0
  61. metadata +89 -60
  62. data/lib/bashly/concerns/command_scopes.rb +0 -83
  63. data/lib/bashly/views/argument/usage.erb +0 -10
  64. data/lib/bashly/views/argument/validations.erb +0 -8
  65. data/lib/bashly/views/command/catch_all_filter.erb +0 -7
  66. data/lib/bashly/views/command/command_fallback.erb +0 -45
  67. data/lib/bashly/views/command/command_filter.erb +0 -22
  68. data/lib/bashly/views/command/command_functions.erb +0 -4
  69. data/lib/bashly/views/command/default_assignments.erb +0 -7
  70. data/lib/bashly/views/command/default_initialize_script.erb +0 -6
  71. data/lib/bashly/views/command/default_root_script.erb +0 -3
  72. data/lib/bashly/views/command/default_script.erb +0 -4
  73. data/lib/bashly/views/command/dependencies_filter.erb +0 -9
  74. data/lib/bashly/views/command/environment_variables_filter.erb +0 -14
  75. data/lib/bashly/views/command/fixed_flags_filter.erb +0 -24
  76. data/lib/bashly/views/command/footer.erb +0 -3
  77. data/lib/bashly/views/command/function.erb +0 -4
  78. data/lib/bashly/views/command/initialize.erb +0 -8
  79. data/lib/bashly/views/command/inspect_args.erb +0 -19
  80. data/lib/bashly/views/command/master_script.erb +0 -14
  81. data/lib/bashly/views/command/normalize_input.erb +0 -24
  82. data/lib/bashly/views/command/parse_requirements.erb +0 -22
  83. data/lib/bashly/views/command/parse_requirements_case.erb +0 -8
  84. data/lib/bashly/views/command/parse_requirements_case_catch_all.erb +0 -18
  85. data/lib/bashly/views/command/parse_requirements_case_repeatable.erb +0 -18
  86. data/lib/bashly/views/command/parse_requirements_case_simple.erb +0 -18
  87. data/lib/bashly/views/command/parse_requirements_while.erb +0 -26
  88. data/lib/bashly/views/command/required_args_filter.erb +0 -7
  89. data/lib/bashly/views/command/required_flags_filter.erb +0 -7
  90. data/lib/bashly/views/command/root_command.erb +0 -4
  91. data/lib/bashly/views/command/run.erb +0 -23
  92. data/lib/bashly/views/command/usage.erb +0 -50
  93. data/lib/bashly/views/command/usage_args.erb +0 -14
  94. data/lib/bashly/views/command/usage_commands.erb +0 -18
  95. data/lib/bashly/views/command/usage_environment_variables.erb +0 -6
  96. data/lib/bashly/views/command/usage_examples.erb +0 -7
  97. data/lib/bashly/views/command/usage_fixed_flags.erb +0 -17
  98. data/lib/bashly/views/command/usage_flags.erb +0 -4
  99. data/lib/bashly/views/command/user_filter.erb +0 -11
  100. data/lib/bashly/views/command/user_lib.erb +0 -6
  101. data/lib/bashly/views/command/version_command.erb +0 -4
  102. data/lib/bashly/views/command/whitelist_filter.erb +0 -33
  103. data/lib/bashly/views/environment_variable/usage.erb +0 -7
  104. data/lib/bashly/views/flag/case.erb +0 -4
  105. data/lib/bashly/views/flag/case_arg.erb +0 -19
  106. data/lib/bashly/views/flag/case_no_arg.erb +0 -8
  107. data/lib/bashly/views/flag/conflicts.erb +0 -18
  108. data/lib/bashly/views/flag/usage.erb +0 -10
  109. data/lib/bashly/views/flag/validations.erb +0 -8
  110. data/lib/bashly/views/wrapper/bash3_bouncer.erb +0 -5
  111. data/lib/bashly/views/wrapper/header.erb +0 -4
  112. data/lib/bashly/views/wrapper/wrapper.erb +0 -6
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.1
4
+ version: 0.8.4
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-22 00:00:00.000000000 Z
11
+ date: 2022-09-04 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.7'
19
+ version: 0.5.0
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.7'
26
+ version: 0.5.0
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.4.1
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.4.1
54
+ version: '0.7'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: mister_bin
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,20 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
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'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
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,83 +0,0 @@
1
- module Bashly
2
- # This is a `Command` concern responsible for providing additional scopes.
3
- module CommandScopes
4
- # Returns an array of all full names (including aliases and aliases of
5
- # parents)
6
- def all_full_names
7
- if parent_command
8
- parent_command.all_full_names.product(aliases).map { |a| a.join ' ' }
9
- else
10
- aliases
11
- end
12
- end
13
-
14
- # Returns a full list of the Command names and aliases combined
15
- def command_aliases
16
- commands.map(&:aliases).flatten
17
- end
18
-
19
- # Returns only the names of the Commands
20
- def command_names
21
- commands.map &:name
22
- end
23
-
24
- # Returns a flat array containing all the commands in this tree.
25
- # This includes self + children + grandchildres + ...
26
- def deep_commands
27
- result = []
28
- commands.each do |command|
29
- result << command
30
- if command.commands.any?
31
- result += command.deep_commands
32
- end
33
- end
34
- result
35
- end
36
-
37
- # If any of this command's subcommands has the default option set to
38
- # true, this default command will be returned, nil otherwise.
39
- def default_command
40
- commands.find { |c| c.default }
41
- end
42
-
43
- # Returns an array of all the default Args
44
- def default_args
45
- args.select &:default
46
- end
47
-
48
- # Returns an array of all the default Environment Variables
49
- def default_environment_variables
50
- environment_variables.select &:default
51
- end
52
-
53
- # Returns an array of all the default Flags
54
- def default_flags
55
- flags.select &:default
56
- end
57
-
58
- # Returns an array of all the required Arguments
59
- def required_args
60
- args.select &:required
61
- end
62
-
63
- # Returns an array of all the required EnvironmentVariables
64
- def required_environment_variables
65
- environment_variables.select &:required
66
- end
67
-
68
- # Returns an array of all the required Flags
69
- def required_flags
70
- flags.select &:required
71
- end
72
-
73
- # Returns an array of all the args with a whitelist
74
- def whitelisted_args
75
- args.select &:allowed
76
- end
77
-
78
- # Returns an array of all the flags with a whitelist arg
79
- def whitelisted_flags
80
- flags.select &:allowed
81
- end
82
- end
83
- 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
@@ -1,4 +0,0 @@
1
- <%= view_marker %>
2
- <%= function_name %>_command() {
3
- <%= load_user_file(filename).indent 2 %>
4
- }
@@ -1,8 +0,0 @@
1
- <%= view_marker %>
2
- initialize() {
3
- version="<%= version %>"
4
- long_usage=''
5
- <%= Settings.strict ? "set -euo pipefail" : "set -e" %>
6
-
7
- <%= load_user_file("initialize.sh", placeholder: false).indent 2 %>
8
- }
@@ -1,19 +0,0 @@
1
- <%= view_marker %>
2
- inspect_args() {
3
- readarray -t sorted_keys < <(printf '%s\n' "${!args[@]}" | sort)
4
- if (( ${#args[@]} )); then
5
- echo args:
6
- for k in "${sorted_keys[@]}"; do echo "- \${args[$k]} = ${args[$k]}"; done
7
- else
8
- echo args: none
9
- fi
10
-
11
- if (( ${#other_args[@]} )); then
12
- echo
13
- echo other_args:
14
- echo "- \${other_args[*]} = ${other_args[*]}"
15
- for i in "${!other_args[@]}"; do
16
- echo "- \${other_args[$i]} = ${other_args[$i]}"
17
- done
18
- fi
19
- }
@@ -1,14 +0,0 @@
1
- <%= view_marker %>
2
- <%= render :root_command if commands.empty? %>
3
- <%= render :version_command %>
4
- <%= render :usage %>
5
- <%= render :normalize_input %>
6
- <%= render :inspect_args %>
7
- <%= render :user_lib if user_lib.any? %>
8
- <%= render :command_functions %>
9
- <%= render :parse_requirements %>
10
- <%= render :initialize %>
11
- <%= render :run %>
12
-
13
- initialize
14
- run "$@"
@@ -1,24 +0,0 @@
1
- <%= view_marker %>
2
- normalize_input() {
3
- local arg flags
4
-
5
- while [[ $# -gt 0 ]]; do
6
- arg="$1"
7
- if [[ $arg =~ ^(--[a-zA-Z0-9_\-]+)=(.+)$ ]]; then
8
- input+=("${BASH_REMATCH[1]}")
9
- input+=("${BASH_REMATCH[2]}")
10
- elif [[ $arg =~ ^(-[a-zA-Z0-9])=(.+)$ ]]; then
11
- input+=("${BASH_REMATCH[1]}")
12
- input+=("${BASH_REMATCH[2]}")
13
- elif [[ $arg =~ ^-([a-zA-Z0-9][a-zA-Z0-9]+)$ ]]; then
14
- flags="${BASH_REMATCH[1]}"
15
- for (( i=0 ; i < ${#flags} ; i++ )); do
16
- input+=("-${flags:i:1}")
17
- done
18
- else
19
- input+=("$arg")
20
- fi
21
-
22
- shift
23
- done
24
- }
@@ -1,22 +0,0 @@
1
- <%= view_marker %>
2
- % if root_command?
3
- parse_requirements() {
4
- % else
5
- <%= function_name %>_parse_requirements() {
6
- % end
7
- <%= render(:fixed_flags_filter).indent 2 %>
8
- <%= render(:environment_variables_filter).indent 2 %>
9
- <%= render(:dependencies_filter).indent 2 %>
10
- <%= render(:command_filter).indent 2 %>
11
- <%= render(:parse_requirements_while).indent 2 %>
12
- <%= render(:required_args_filter).indent 2 %>
13
- <%= render(:required_flags_filter).indent 2 %>
14
- <%= render(:catch_all_filter).indent 2 %>
15
- <%= render(:default_assignments).indent 2 %>
16
- <%= render(:whitelist_filter).indent 2 %>
17
- <%= render(:user_filter).indent 2 %>
18
- }
19
-
20
- % commands.each do |command|
21
- <%= command.render :parse_requirements %>
22
- % end
@@ -1,8 +0,0 @@
1
- <%= view_marker %>
2
- % if catch_all.enabled?
3
- <%= render(:parse_requirements_case_catch_all) %>
4
- % elsif repeatable_arg_exist?
5
- <%= render(:parse_requirements_case_repeatable) %>
6
- % else
7
- <%= render(:parse_requirements_case_simple) %>
8
- % end
@@ -1,18 +0,0 @@
1
- <%= view_marker %>
2
- % if args.any?
3
- % condition = "if"
4
- % args.each do |arg|
5
- <%= condition %> [[ -z ${args[<%= arg.name %>]+x} ]]; then
6
- <%= arg.render(:validations).indent 2 %>
7
- args[<%= arg.name %>]=$1
8
- shift
9
- % condition = "elif"
10
- % end
11
- else
12
- other_args+=("$1")
13
- shift
14
- fi
15
- % else
16
- other_args+=("$1")
17
- shift
18
- % end
@@ -1,18 +0,0 @@
1
- <%= view_marker %>
2
- % condition = "if"
3
- % args.each do |arg|
4
- <%= condition %> [[ -z ${args[<%= arg.name %>]+x} ]]; then
5
- <%= arg.render(:validations).indent 2 %>
6
- % if arg.repeatable
7
- args[<%= arg.name %>]="\"$1\""
8
- shift
9
- else
10
- args[<%= arg.name %>]="${args[<%= arg.name %>]} \"$1\""
11
- shift
12
- % else
13
- args[<%= arg.name %>]=$1
14
- shift
15
- % end
16
- % condition = "elif"
17
- % end
18
- fi
@@ -1,18 +0,0 @@
1
- <%= view_marker %>
2
- % if args.any?
3
- % condition = "if"
4
- % args.each do |arg|
5
- <%= condition %> [[ -z ${args[<%= arg.name %>]+x} ]]; then
6
- <%= arg.render(:validations).indent 2 %>
7
- args[<%= arg.name %>]=$1
8
- shift
9
- % condition = "elif"
10
- % end
11
- else
12
- printf "<%= strings[:invalid_argument] %>\n" "$key"
13
- exit 1
14
- fi
15
- % else
16
- printf "<%= strings[:invalid_argument] %>\n" "$key"
17
- exit 1
18
- % end