cri 2.13.0 → 2.14.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 +4 -4
- data/Gemfile.lock +64 -0
- data/NEWS.md +7 -2
- data/README.md +58 -0
- data/lib/cri/command.rb +16 -0
- data/lib/cri/version.rb +1 -1
- data/test/test_command.rb +74 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4990c5f7f5168cb66f3e434512976721a3dc2b1e93b0a88306c58106aacb21c
|
4
|
+
data.tar.gz: 6866a5179a3c338c905e5d50cb89391b12608e7d0d246def19a3e0e5971fa6f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd21b56d57ce4356a19a4875ada15f13c7019f739ea7267a104610c3ad33557dff506c589e4b70929d20d77a938d2fb71e963ca5b2a908ad54a7ac6e89dea4e1
|
7
|
+
data.tar.gz: b7dfaf7409934b132cc640ca21a0128af76ea1835986627ea68d83922233fe6b14b8e8a296143ed6d545beb7c408ea028cc8353aca8d2b4371171d5c01ba02cb
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
cri (2.13.0)
|
5
|
+
colored (~> 1.2)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
asciidoctor (1.5.7.1)
|
11
|
+
ast (2.4.0)
|
12
|
+
colored (1.2)
|
13
|
+
coveralls (0.8.22)
|
14
|
+
json (>= 1.8, < 3)
|
15
|
+
simplecov (~> 0.16.1)
|
16
|
+
term-ansicolor (~> 1.3)
|
17
|
+
thor (~> 0.19.4)
|
18
|
+
tins (~> 1.6)
|
19
|
+
docile (1.3.1)
|
20
|
+
jaro_winkler (1.5.1)
|
21
|
+
json (2.1.0)
|
22
|
+
minitest (5.11.3)
|
23
|
+
parallel (1.12.1)
|
24
|
+
parser (2.5.1.2)
|
25
|
+
ast (~> 2.4.0)
|
26
|
+
powerpack (0.1.2)
|
27
|
+
rainbow (3.0.0)
|
28
|
+
rake (12.3.1)
|
29
|
+
rubocop (0.58.2)
|
30
|
+
jaro_winkler (~> 1.5.1)
|
31
|
+
parallel (~> 1.10)
|
32
|
+
parser (>= 2.5, != 2.5.1.1)
|
33
|
+
powerpack (~> 0.1)
|
34
|
+
rainbow (>= 2.2.2, < 4.0)
|
35
|
+
ruby-progressbar (~> 1.7)
|
36
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
37
|
+
ruby-progressbar (1.10.0)
|
38
|
+
simplecov (0.16.1)
|
39
|
+
docile (~> 1.1)
|
40
|
+
json (>= 1.8, < 3)
|
41
|
+
simplecov-html (~> 0.10.0)
|
42
|
+
simplecov-html (0.10.2)
|
43
|
+
term-ansicolor (1.6.0)
|
44
|
+
tins (~> 1.0)
|
45
|
+
thor (0.19.4)
|
46
|
+
tins (1.16.3)
|
47
|
+
unicode-display_width (1.4.0)
|
48
|
+
yard (0.9.16)
|
49
|
+
|
50
|
+
PLATFORMS
|
51
|
+
ruby
|
52
|
+
|
53
|
+
DEPENDENCIES
|
54
|
+
asciidoctor
|
55
|
+
bundler (~> 1.6)
|
56
|
+
coveralls
|
57
|
+
cri!
|
58
|
+
minitest
|
59
|
+
rake
|
60
|
+
rubocop
|
61
|
+
yard
|
62
|
+
|
63
|
+
BUNDLED WITH
|
64
|
+
1.16.4
|
data/NEWS.md
CHANGED
data/README.md
CHANGED
@@ -343,6 +343,64 @@ command has subcommands, and no subcommands are otherwise explicitly specified:
|
|
343
343
|
default_subcommand 'compile'
|
344
344
|
```
|
345
345
|
|
346
|
+
### Loading commands from separate files
|
347
|
+
|
348
|
+
You can use `Cri::Command.load_file` to load a command from a file.
|
349
|
+
|
350
|
+
For example, given the file _commands/check.rb_ with the following contents:
|
351
|
+
|
352
|
+
```ruby
|
353
|
+
name 'check'
|
354
|
+
usage 'check'
|
355
|
+
summary 'runs all checks'
|
356
|
+
description '…'
|
357
|
+
|
358
|
+
run do |opts, args, cmd|
|
359
|
+
puts "Running checks…"
|
360
|
+
end
|
361
|
+
```
|
362
|
+
|
363
|
+
To load this command:
|
364
|
+
|
365
|
+
```ruby
|
366
|
+
Cri::Command.load_file('commands/check.rb')
|
367
|
+
```
|
368
|
+
|
369
|
+
`Cri::Command.load_file` expects the file to be in UTF-8.
|
370
|
+
|
371
|
+
You can also use it to load subcommands:
|
372
|
+
|
373
|
+
```ruby
|
374
|
+
root_cmd = Cri::Command.load_file('commands/nanoc.rb')
|
375
|
+
root_cmd.add_command(Cri::Command.load_file('commands/comile.rb'))
|
376
|
+
root_cmd.add_command(Cri::Command.load_file('commands/view.rb'))
|
377
|
+
root_cmd.add_command(Cri::Command.load_file('commands/check.rb'))
|
378
|
+
```
|
379
|
+
|
380
|
+
#### Automatically inferring command names
|
381
|
+
|
382
|
+
Pass `infer_name: true` to `Cri::Command.load_file` to use the file basename as the name of the command.
|
383
|
+
|
384
|
+
For example, given a file _commands/check.rb_ with the following contents:
|
385
|
+
|
386
|
+
```ruby
|
387
|
+
usage 'check'
|
388
|
+
summary 'runs all checks'
|
389
|
+
description '…'
|
390
|
+
|
391
|
+
run do |opts, args, cmd|
|
392
|
+
puts "Running checks…"
|
393
|
+
end
|
394
|
+
```
|
395
|
+
|
396
|
+
To load this command and infer the name:
|
397
|
+
|
398
|
+
```ruby
|
399
|
+
cmd = Cri::Command.load_file('commands/check.rb', infer_name: true)
|
400
|
+
```
|
401
|
+
|
402
|
+
`cmd.name` will be `check`, derived from the filename.
|
403
|
+
|
346
404
|
## Contributors
|
347
405
|
|
348
406
|
* Bart Mesuere
|
data/lib/cri/command.rb
CHANGED
@@ -132,6 +132,22 @@ module Cri
|
|
132
132
|
dsl.command
|
133
133
|
end
|
134
134
|
|
135
|
+
# Creates a new command using a DSL, from code defined in the given filename.
|
136
|
+
#
|
137
|
+
# @param [String] filename The filename that contains the command definition
|
138
|
+
# as a string
|
139
|
+
#
|
140
|
+
# @return [Cri::Command] The newly defined command
|
141
|
+
def self.load_file(filename, infer_name: false)
|
142
|
+
code = File.read(filename, encoding: 'UTF-8')
|
143
|
+
define(code, filename).tap do |cmd|
|
144
|
+
if infer_name
|
145
|
+
command_name = File.basename(filename, '.rb')
|
146
|
+
cmd.modify { name command_name }
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
135
151
|
# Returns a new command that has support for the `-h`/`--help` option and
|
136
152
|
# also has a `help` subcommand. It is intended to be modified (adding
|
137
153
|
# name, summary, description, other subcommands, …)
|
data/lib/cri/version.rb
CHANGED
data/test/test_command.rb
CHANGED
@@ -756,5 +756,79 @@ module Cri
|
|
756
756
|
assert_equal [], lines(out)
|
757
757
|
assert_equal ['moo: incorrect number of arguments given: expected 0, but got 1'], lines(err)
|
758
758
|
end
|
759
|
+
|
760
|
+
def test_load_file
|
761
|
+
Dir.mktmpdir('foo') do |dir|
|
762
|
+
filename = "#{dir}/moo.rb"
|
763
|
+
File.write(filename, <<~CMD)
|
764
|
+
name 'moo'
|
765
|
+
usage 'dunno whatever'
|
766
|
+
summary 'does stuff'
|
767
|
+
description 'This command does a lot of stuff.'
|
768
|
+
no_params
|
769
|
+
|
770
|
+
run do |_opts, args|
|
771
|
+
end
|
772
|
+
CMD
|
773
|
+
|
774
|
+
cmd = Cri::Command.load_file(filename)
|
775
|
+
assert_equal('moo', cmd.name)
|
776
|
+
end
|
777
|
+
end
|
778
|
+
|
779
|
+
def test_load_file_infer_name_false
|
780
|
+
Dir.mktmpdir('foo') do |dir|
|
781
|
+
filename = "#{dir}/moo.rb"
|
782
|
+
File.write(filename, <<~CMD)
|
783
|
+
usage 'dunno whatever'
|
784
|
+
summary 'does stuff'
|
785
|
+
description 'This command does a lot of stuff.'
|
786
|
+
no_params
|
787
|
+
|
788
|
+
run do |_opts, args|
|
789
|
+
end
|
790
|
+
CMD
|
791
|
+
|
792
|
+
cmd = Cri::Command.load_file(filename)
|
793
|
+
assert_equal(nil, cmd.name)
|
794
|
+
end
|
795
|
+
end
|
796
|
+
|
797
|
+
def test_load_file_infer_name
|
798
|
+
Dir.mktmpdir('foo') do |dir|
|
799
|
+
filename = "#{dir}/moo.rb"
|
800
|
+
File.write(filename, <<~CMD)
|
801
|
+
usage 'dunno whatever'
|
802
|
+
summary 'does stuff'
|
803
|
+
description 'This command does a lot of stuff.'
|
804
|
+
no_params
|
805
|
+
|
806
|
+
run do |_opts, args|
|
807
|
+
end
|
808
|
+
CMD
|
809
|
+
|
810
|
+
cmd = Cri::Command.load_file(filename, infer_name: true)
|
811
|
+
assert_equal('moo', cmd.name)
|
812
|
+
end
|
813
|
+
end
|
814
|
+
|
815
|
+
def test_load_file_infer_name_double
|
816
|
+
Dir.mktmpdir('foo') do |dir|
|
817
|
+
filename = "#{dir}/moo.rb"
|
818
|
+
File.write(filename, <<~CMD)
|
819
|
+
name 'oink'
|
820
|
+
usage 'dunno whatever'
|
821
|
+
summary 'does stuff'
|
822
|
+
description 'This command does a lot of stuff.'
|
823
|
+
no_params
|
824
|
+
|
825
|
+
run do |_opts, args|
|
826
|
+
end
|
827
|
+
CMD
|
828
|
+
|
829
|
+
cmd = Cri::Command.load_file(filename, infer_name: true)
|
830
|
+
assert_equal('moo', cmd.name)
|
831
|
+
end
|
832
|
+
end
|
759
833
|
end
|
760
834
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Defreyne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-08-
|
11
|
+
date: 2018-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colored
|
@@ -50,6 +50,7 @@ extra_rdoc_files:
|
|
50
50
|
files:
|
51
51
|
- CODE_OF_CONDUCT.md
|
52
52
|
- Gemfile
|
53
|
+
- Gemfile.lock
|
53
54
|
- LICENSE
|
54
55
|
- NEWS.md
|
55
56
|
- README.md
|