bashly 1.1.10 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0857ce9cc52b919c113242568610ed9abbd447221b6d473bbf05f1cd8f29de69'
4
- data.tar.gz: 3eb8279ffdbf23a69a5c7eb52d98f2f0c3ca1730f54eb6a18b4957038b69810a
3
+ metadata.gz: 5000e81ecf047c31547832097355e0d1b5de630041ef2533a80ce70f146e8282
4
+ data.tar.gz: 9c03b8ef9215a317ebfd75333304065c271e77296a55753de65e612f9d1a8432
5
5
  SHA512:
6
- metadata.gz: 2aa95822cebdc83d0e3a1af47a2d75886994a7d79976188049b8ea6732ca3d6a83003bfea48c3789e8d3a4db562e16f8f9ed169da414065567c7abf2d2d4c40b
7
- data.tar.gz: 3cf237064dfe7f9cfb2523c85d838141f9869e246619b9ed2bf9862499a0345ea1da12178802ee6d7a654e1ad8fec674b751442566b8b8ca1e22b77055105fd1
6
+ metadata.gz: c6dc6b49075f6e250aec3204f6b9ff2bd6e4236da1bcc5229691565dcc8a4ff4c1d1c06a139c092eae33c61123753cdb542583a69596caf299f87c6ccf3d4f07
7
+ data.tar.gz: ab9d9fc13a779bfd4d71adbae49e66961c697a46e5cb386875dac1d9e1b021828a2821332f2687d16b87b3fb820cdc006b61d86e7425dd6fdb37ac7aceb12b33
@@ -55,6 +55,10 @@ env: development
55
55
  # The extension to use when reading/writing partial script snippets
56
56
  partials_extension: sh
57
57
 
58
+ # Show command examples (if any) whenever the user does not provide the
59
+ # required arguments
60
+ show_examples_on_error: false
61
+
58
62
  # Display various usage elements in color by providing the name of the color
59
63
  # function. The value for each property is a name of a function that is
60
64
  # available in your script, for example: `green` or `bold`.
@@ -4,6 +4,7 @@
4
4
  # Usage captions
5
5
  usage: "Usage:"
6
6
  options: "Options:"
7
+ global_options: "Global Options:"
7
8
  arguments: "Arguments:"
8
9
  commands: "Commands:"
9
10
  examples: "Examples:"
@@ -32,6 +33,7 @@ missing_required_argument: "missing required argument: %{arg}\\nusage: %{usage}"
32
33
  missing_required_flag: "missing required flag: %{usage}"
33
34
  missing_required_environment_variable: "missing required environment variable: %{var}"
34
35
  missing_dependency: "missing dependency: %{dependency}"
36
+ examples_caption_on_error: 'examples:'
35
37
  disallowed_flag: "%{name} must be one of: %{allowed}"
36
38
  disallowed_argument: "%{name} must be one of: %{allowed}"
37
39
  disallowed_environment_variable: "%{name} environment variable must be one of: %{allowed}"
@@ -307,11 +307,12 @@ module Bashly
307
307
 
308
308
  # Returns a constructed string suitable for Usage pattern
309
309
  def usage_string
310
- result = [full_name]
310
+ result = [base_usage_pattern]
311
+ command_string = default_command&.default == 'force' ? '[COMMAND]' : 'COMMAND'
311
312
 
312
313
  result.push case mode
313
- when :global_flags then ['[OPTIONS]', 'COMMAND']
314
- when :commands then ['COMMAND']
314
+ when :global_flags then ['[OPTIONS]', command_string]
315
+ when :commands then [command_string]
315
316
  when :args_and_flags then usage_string_args + ['[OPTIONS]']
316
317
  when :args then usage_string_args
317
318
  when :flags then ['[OPTIONS]']
@@ -326,6 +327,11 @@ module Bashly
326
327
  args.map(&:usage_string)
327
328
  end
328
329
 
330
+ def base_usage_pattern
331
+ usage_pattern = default ? "[#{name}]" : name
332
+ parents.any? ? (parents + [usage_pattern]).join(' ') : usage_pattern
333
+ end
334
+
329
335
  # Returns an array of files to include as is inside the script
330
336
  # This is meant to provide the user with the ability to add custom
331
337
  # functions
@@ -10,6 +10,7 @@ module Bashly
10
10
  :config_path,
11
11
  :lib_dir,
12
12
  :partials_extension,
13
+ :show_examples_on_error,
13
14
  :source_dir,
14
15
  :strict,
15
16
  :tab_indent,
@@ -57,6 +58,10 @@ module Bashly
57
58
  env == :production
58
59
  end
59
60
 
61
+ def show_examples_on_error
62
+ @show_examples_on_error ||= get :show_examples_on_error
63
+ end
64
+
60
65
  def source_dir
61
66
  @source_dir ||= get :source_dir
62
67
  end
@@ -1,3 +1,3 @@
1
1
  module Bashly
2
- VERSION = '1.1.10'
2
+ VERSION = '1.2.0'
3
3
  end
@@ -0,0 +1,8 @@
1
+ if Settings.show_examples_on_error && examples
2
+ = view_marker
3
+
4
+ > printf "{{ strings[:examples_caption_on_error] }}\n" >&2
5
+ examples.each do |example|
6
+ > printf "{{ example.wrap(78).indent(2).sanitize_for_print }}\n" >&2
7
+ end
8
+ end
@@ -1,7 +1,8 @@
1
1
  = view_marker
2
2
 
3
3
  > if [[ -n $long_usage ]]; then
4
- > printf "%s\n" "{{ strings[:options].color(:caption) }}"
4
+ options_caption = public_commands.any? && public_flags.any? ? strings[:global_options] : strings[:options]
5
+ > printf "%s\n" "{{ options_caption.color(:caption) }}"
5
6
  >
6
7
  = render(:usage_flags).indent 2 if public_flags.any?
7
8
  = render(:usage_fixed_flags).indent 2
@@ -4,10 +4,10 @@ if required_args.any?
4
4
  required_args.each do |arg|
5
5
  > if [[ -z ${args['{{ arg.name }}']+x} ]]; then
6
6
  > printf "{{ strings[:missing_required_argument] % { arg: arg.name.upcase, usage: usage_string } }}\n" >&2
7
+ = render(:examples_on_error).indent 2
7
8
  > exit 1
8
9
  > fi
9
10
  end
10
11
 
11
12
  >
12
-
13
- end
13
+ end
@@ -1,24 +1,17 @@
1
1
  = view_marker
2
2
 
3
3
  > {{ function_name }}_usage() {
4
- > if [[ -n $long_usage ]]; then
5
-
6
4
  if summary == help
7
- > printf "{{ caption_string.sanitize_for_print }}\n"
8
- > echo
5
+ > printf "{{ caption_string.sanitize_for_print }}\n\n"
9
6
  else
10
- > printf "{{ full_name }}\n"
11
- > echo
12
- > printf "{{ help.wrap(78).indent(2).sanitize_for_print }}\n"
13
- > echo
7
+ > if [[ -n $long_usage ]]; then
8
+ > printf "{{ full_name }}\n\n"
9
+ > printf "{{ help.wrap(78).indent(2).sanitize_for_print }}\n\n"
10
+ > else
11
+ > printf "{{ caption_string.sanitize_for_print }}\n\n"
12
+ > fi
14
13
  end
15
14
 
16
- > else
17
- > printf "{{ caption_string.sanitize_for_print }}\n"
18
- > echo
19
- > fi
20
- >
21
-
22
15
  if alt&.any?
23
16
  > printf "{{ strings[:command_alias] % { alias: alt.join(', ') } }}\n"
24
17
  > echo
@@ -48,3 +41,5 @@ end
48
41
  commands.each do |command|
49
42
  = command.render 'usage'
50
43
  end
44
+
45
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bashly
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.10
4
+ version: 1.2.0
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: 2024-04-01 00:00:00.000000000 Z
11
+ date: 2024-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colsole
@@ -240,6 +240,7 @@ files:
240
240
  - lib/bashly/views/command/dependencies_filter.gtx
241
241
  - lib/bashly/views/command/environment_variables_default.gtx
242
242
  - lib/bashly/views/command/environment_variables_filter.gtx
243
+ - lib/bashly/views/command/examples_on_error.gtx
243
244
  - lib/bashly/views/command/fixed_flags_filter.gtx
244
245
  - lib/bashly/views/command/footer.gtx
245
246
  - lib/bashly/views/command/function.gtx
@@ -307,7 +308,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
307
308
  - !ruby/object:Gem::Version
308
309
  version: '0'
309
310
  requirements: []
310
- rubygems_version: 3.5.6
311
+ rubygems_version: 3.5.14
311
312
  signing_key:
312
313
  specification_version: 4
313
314
  summary: Bash Command Line Tool Generator