ex_aequo_cli 0.1.2 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b61fac1a46509a4bdfd77e35bbfd9b962e95ec047c5cc0bf4250ced2e20da99f
4
- data.tar.gz: 32fa56a0e3be8becb705172cac48fb6d0c430a209129bc0b203fe4c223ab9396
3
+ metadata.gz: 0fca7956e66b06df6a1ecd8490556ac3d286ac068014bac48ef70a32fa12152d
4
+ data.tar.gz: 2d8150a6c6d1fe451e3ba9e9b44bcc19c7b2e6f0d4dd275012b11d48f059cfd7
5
5
  SHA512:
6
- metadata.gz: 001c6d3e0fabed6a3cb2a8893756f6754ef991e5648806575b24805d30e266bcb6ae2ab5d856f046a8a2b5fb24031b605654f1307435eb31ef5e0342d6920910
7
- data.tar.gz: 396e0c524a930cce9936d76445a77fb76dccdf177851604d95bbd825185e0ff24d2daf89aa94ea38020f8ace26906bffb6fe1942c7aee780d85b489f2363a9b1
6
+ metadata.gz: f71630f881eb23a67dbcb99aa3373eee513178e8e5b3198a2b09f88f34abf618f0694e4586189bd7cae47f97a6af8e8bceb9fabd93911729a4f244960328391c
7
+ data.tar.gz: 4fb1f146ec054018eb537ef0f088b4acc694ee8a01ef2324d1b0d6d0a95655b1fcc5b9538b1e571af1c23405798fbfdfd9d7447d92574c68c258130e938cd771
@@ -3,32 +3,62 @@
3
3
  module ExAequo
4
4
  module Cli
5
5
  class Args
6
- class Checker
7
-
6
+ class ArgChecker
8
7
  def check!(result)
9
- raise ConstraintError, "#{@name} in \n#{result.inspect}" unless @blk.(result)
8
+ case @slice
9
+ when Range
10
+ check_range!(result)
11
+ else
12
+ check_values!(result)
13
+ end
14
+ rescue Exception => re
15
+ raise ConstraintError, "#{@name} in \n#{re.message}"
10
16
  end
11
17
 
12
18
  private
13
- def initialize(name:, &blk)
19
+ def initialize(name:, slice:, &blk)
14
20
  @blk = blk
15
21
  @name = name
22
+ @slice = make_slice(slice)
23
+ end
24
+
25
+ def check_range!(result)
26
+ result.args[@slice].each { check_value!(it) }
27
+ end
28
+
29
+ def check_value!(value)
30
+ raise ConstraintError, "#{@name} in \n#{value.inspect}" unless @blk.(value)
31
+ end
32
+
33
+ def check_values!(result)
34
+ result.args.values_at(*@slice).each { check_value!(it) }
16
35
  end
17
-
18
36
 
19
- def maybe_replace(result, definition)
20
- case definition
21
- when Symbol
22
- replace_if_defined result, definition
37
+ def make_slice(slice)
38
+ case slice
39
+ when Range
40
+ slice
41
+ when Integer
42
+ [slice]
43
+ when Array
44
+ slice
23
45
  else
24
- definition
46
+ raise ArgumentError, "slice #{slice.inspect} must be a Range, Array or Integer"
25
47
  end
26
48
  end
49
+ end
27
50
 
28
- def replace_if_defined(result, definition)
29
- result
30
- .values
31
- .fetch(definition, definition)
51
+ class Checker
52
+ def check!(result)
53
+ raise ConstraintError, "#{@name} in \n#{result.inspect}" unless @blk.(result)
54
+ rescue Exception => re
55
+ raise ConstraintError, "#{@name} in \n#{re.message}"
56
+ end
57
+
58
+ private
59
+ def initialize(name:, &blk)
60
+ @blk = blk
61
+ @name = name
32
62
  end
33
63
  end
34
64
  end
@@ -16,7 +16,6 @@ module ExAequo
16
16
  new.parse(args, strict: false, &blk)
17
17
  end
18
18
 
19
-
20
19
  def check(name, &blk)
21
20
  raise ArgumentError, 'check method needs a block' unless blk
22
21
 
@@ -24,6 +23,15 @@ module ExAequo
24
23
  self
25
24
  end
26
25
 
26
+ def check_args(name, slice, &blk)
27
+ raise ArgumentError, 'check_arg method needs a block' unless blk
28
+
29
+ slice = [slice] unless Enumerable === slice
30
+ checkers << ArgChecker.new(name:, slice:, &blk)
31
+
32
+ self
33
+ end
34
+
27
35
  def parse(args, strict: true)
28
36
  @args = args
29
37
 
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ExAequo
4
+ module Cli
5
+ module System extend self
6
+
7
+ def cmd_or_puts(cmd, flag:)
8
+ case flag
9
+ in true
10
+ Kernel.system(cmd)
11
+ in :echo
12
+ Kernel.send(:`, cmd)
13
+ in IO
14
+ flag.puts(cmd)
15
+ in StringIO
16
+ flag.puts(cmd)
17
+ else
18
+ raise ArgumentError, "illegal flag in cmd_or_puts, accepeted values/types are true, :echo, IO, StringIO"
19
+ end
20
+ end
21
+
22
+ def cmd_or_debug(cmd, outstream: $stderr)
23
+ flag = ENV['DEBUG'] ? outstream : true
24
+
25
+ cmd_or_puts(cmd, flag:)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -2,7 +2,7 @@
2
2
 
3
3
  module ExAequo
4
4
  module Cli
5
- VERSION = '0.1.2'
5
+ VERSION = '0.1.4'
6
6
  end
7
7
  end
8
8
  # SPDX-License-Identifier: AGPL-3.0-or-later
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ex_aequo_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 0.1.11
18
+ version: 0.1.12
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 0.1.11
25
+ version: 0.1.12
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rspec
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -54,6 +54,7 @@ files:
54
54
  - lib/ex_aequo/cli/args/flag_description.rb
55
55
  - lib/ex_aequo/cli/args/result.rb
56
56
  - lib/ex_aequo/cli/args/view.rb
57
+ - lib/ex_aequo/cli/system.rb
57
58
  - lib/ex_aequo/cli/version.rb
58
59
  homepage: https://codeberg.org/lab419/rb_ex_aequo_cli
59
60
  licenses: