bashly 1.1.10 → 1.2.0

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.
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