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 +4 -4
- data/lib/ex_aequo/cli/args/checker.rb +44 -14
- data/lib/ex_aequo/cli/args.rb +9 -1
- data/lib/ex_aequo/cli/system.rb +30 -0
- data/lib/ex_aequo/cli/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fca7956e66b06df6a1ecd8490556ac3d286ac068014bac48ef70a32fa12152d
|
4
|
+
data.tar.gz: 2d8150a6c6d1fe451e3ba9e9b44bcc19c7b2e6f0d4dd275012b11d48f059cfd7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
7
|
-
|
6
|
+
class ArgChecker
|
8
7
|
def check!(result)
|
9
|
-
|
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
|
20
|
-
case
|
21
|
-
when
|
22
|
-
|
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
|
-
|
46
|
+
raise ArgumentError, "slice #{slice.inspect} must be a Range, Array or Integer"
|
25
47
|
end
|
26
48
|
end
|
49
|
+
end
|
27
50
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
data/lib/ex_aequo/cli/args.rb
CHANGED
@@ -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
|
data/lib/ex_aequo/cli/version.rb
CHANGED
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.
|
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.
|
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.
|
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:
|