bashly 1.1.9 → 1.1.10

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: 57e204b6791653f135c34bdf18a2b882d180087bbec57044db09540e342d81f0
4
- data.tar.gz: ef1bc1015e325d227b3bc32d537a51fc369ea7833972f6f9a15e592d79ddc131
3
+ metadata.gz: '0857ce9cc52b919c113242568610ed9abbd447221b6d473bbf05f1cd8f29de69'
4
+ data.tar.gz: 3eb8279ffdbf23a69a5c7eb52d98f2f0c3ca1730f54eb6a18b4957038b69810a
5
5
  SHA512:
6
- metadata.gz: 4947a104aa165d0e216a53a07908b72c290ff8e905e96acde044025bccefbab783ed5c87f3c217b674bdfb57db21c5d149827a9d8383065fef78eaac701826c0
7
- data.tar.gz: 99eb5313b587980c540f22596cc8e99794cf7ed24cb0f62e06c4179a64399e80099c6cbc7d2803fe96827cdbf5734bbb9fc7364533979da45cd44973d0511748
6
+ metadata.gz: 2aa95822cebdc83d0e3a1af47a2d75886994a7d79976188049b8ea6732ca3d6a83003bfea48c3789e8d3a4db562e16f8f9ed169da414065567c7abf2d2d4c40b
7
+ data.tar.gz: 3cf237064dfe7f9cfb2523c85d838141f9869e246619b9ed2bf9862499a0345ea1da12178802ee6d7a654e1ad8fec674b751442566b8b8ca1e22b77055105fd1
@@ -1,6 +1,6 @@
1
1
  class String
2
2
  def sanitize_for_print
3
- gsub("\n", '\\n').gsub('"', '\"').gsub('`', '\\\\`')
3
+ gsub("\n", '\\n').gsub('"', '\"').gsub('`', '\\\\`').gsub('%', '%%')
4
4
  end
5
5
 
6
6
  def for_markdown
@@ -42,6 +42,11 @@ tab_indent: false
42
42
  # `-abc` as if it is `-a -b -c`.
43
43
  compact_short_flags: true
44
44
 
45
+ # When true, the generated script will consider any argument in the form of
46
+ # `--flag=value` and `-f=value` as if it is `--flag value` and `-f value`
47
+ # respectively.
48
+ conjoined_flag_args: true
49
+
45
50
  # Set to 'production' or 'development':
46
51
  # env: production Generate a smaller script, without file markers
47
52
  # env: development Generate with file markers
@@ -29,7 +29,7 @@ module Bashly
29
29
  options['help'] ||= ''
30
30
  end
31
31
 
32
- def method_missing(method_name, *arguments, &block)
32
+ def method_missing(method_name, *arguments, &)
33
33
  key = method_name.to_s
34
34
  respond_to?(method_name) ? options[key] : super
35
35
  end
@@ -48,7 +48,7 @@ module Bashly
48
48
  def usage_string
49
49
  return nil unless enabled?
50
50
 
51
- required? ? label : "[#{label}]"
51
+ required? ? "[--] #{label}" : "[--] [#{label}]"
52
52
  end
53
53
  end
54
54
  end
@@ -6,6 +6,7 @@ module Bashly
6
6
  attr_writer(
7
7
  :commands_dir,
8
8
  :compact_short_flags,
9
+ :conjoined_flag_args,
9
10
  :config_path,
10
11
  :lib_dir,
11
12
  :partials_extension,
@@ -24,6 +25,10 @@ module Bashly
24
25
  @compact_short_flags ||= get :compact_short_flags
25
26
  end
26
27
 
28
+ def conjoined_flag_args
29
+ @conjoined_flag_args ||= get :conjoined_flag_args
30
+ end
31
+
27
32
  def config_path
28
33
  @config_path ||= get(:config_path) % { source_dir: source_dir }
29
34
  end
@@ -1,3 +1,3 @@
1
1
  module Bashly
2
- VERSION = '1.1.9'
2
+ VERSION = '1.1.10'
3
3
  end
@@ -1,30 +1,7 @@
1
1
  = view_marker
2
2
 
3
- > normalize_input() {
4
- > local arg flags
5
- >
6
- > while [[ $# -gt 0 ]]; do
7
- > arg="$1"
8
- > if [[ $arg =~ ^(--[a-zA-Z0-9_\-]+)=(.+)$ ]]; then
9
- > input+=("${BASH_REMATCH[1]}")
10
- > input+=("${BASH_REMATCH[2]}")
11
- > elif [[ $arg =~ ^(-[a-zA-Z0-9])=(.+)$ ]]; then
12
- > input+=("${BASH_REMATCH[1]}")
13
- > input+=("${BASH_REMATCH[2]}")
14
-
15
- if Settings.compact_short_flags
16
- > elif [[ $arg =~ ^-([a-zA-Z0-9][a-zA-Z0-9]+)$ ]]; then
17
- > flags="${BASH_REMATCH[1]}"
18
- > for ((i = 0; i < ${#flags}; i++)); do
19
- > input+=("-${flags:i:1}")
20
- > done
3
+ if Settings.compact_short_flags || Settings.conjoined_flag_args
4
+ = render :normalize_input_function
5
+ else
6
+ = render :normalize_input_simple
21
7
  end
22
-
23
- > else
24
- > input+=("$arg")
25
- > fi
26
- >
27
- > shift
28
- > done
29
- > }
30
- >
@@ -0,0 +1,39 @@
1
+ = view_marker
2
+
3
+ > normalize_input() {
4
+ > local arg flags passthru
5
+ > passthru=false
6
+ >
7
+ > while [[ $# -gt 0 ]]; do
8
+ > arg="$1"
9
+ > if [[ $passthru == true ]]; then
10
+ > input+=("$arg")
11
+
12
+ if Settings.conjoined_flag_args
13
+ > elif [[ $arg =~ ^(--[a-zA-Z0-9_\-]+)=(.+)$ ]]; then
14
+ > input+=("${BASH_REMATCH[1]}")
15
+ > input+=("${BASH_REMATCH[2]}")
16
+ > elif [[ $arg =~ ^(-[a-zA-Z0-9])=(.+)$ ]]; then
17
+ > input+=("${BASH_REMATCH[1]}")
18
+ > input+=("${BASH_REMATCH[2]}")
19
+ end
20
+
21
+ if Settings.compact_short_flags
22
+ > elif [[ $arg =~ ^-([a-zA-Z0-9][a-zA-Z0-9]+)$ ]]; then
23
+ > flags="${BASH_REMATCH[1]}"
24
+ > for ((i = 0; i < ${#flags}; i++)); do
25
+ > input+=("-${flags:i:1}")
26
+ > done
27
+ end
28
+
29
+ > elif [[ "$arg" == "--" ]]; then
30
+ > passthru=true
31
+ > input+=("$arg")
32
+ > else
33
+ > input+=("$arg")
34
+ > fi
35
+ >
36
+ > shift
37
+ > done
38
+ > }
39
+ >
@@ -0,0 +1,6 @@
1
+ = view_marker
2
+
3
+ > normalize_input() {
4
+ > input=("$@")
5
+ > }
6
+ >
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.9
4
+ version: 1.1.10
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-03-20 00:00:00.000000000 Z
11
+ date: 2024-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colsole
@@ -248,6 +248,8 @@ files:
248
248
  - lib/bashly/views/command/long_usage.gtx
249
249
  - lib/bashly/views/command/master_script.gtx
250
250
  - lib/bashly/views/command/normalize_input.gtx
251
+ - lib/bashly/views/command/normalize_input_function.gtx
252
+ - lib/bashly/views/command/normalize_input_simple.gtx
251
253
  - lib/bashly/views/command/parse_requirements.gtx
252
254
  - lib/bashly/views/command/parse_requirements_case.gtx
253
255
  - lib/bashly/views/command/parse_requirements_case_catch_all.gtx
@@ -298,7 +300,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
298
300
  requirements:
299
301
  - - ">="
300
302
  - !ruby/object:Gem::Version
301
- version: '3.0'
303
+ version: '3.1'
302
304
  required_rubygems_version: !ruby/object:Gem::Requirement
303
305
  requirements:
304
306
  - - ">="