bashly 0.8.0 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
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