cri 2.7.0 → 2.7.1

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
  SHA1:
3
- metadata.gz: 7c7acd3557015c65b10c166ddd982ff09a9e9439
4
- data.tar.gz: 1084f157713632392659284ae92b39b85f5c45dd
3
+ metadata.gz: 125652850f61d27f4d91ec9e3bbfa46f25c03d11
4
+ data.tar.gz: dd5156012cb91ad551377bd807cd9b544300a618
5
5
  SHA512:
6
- metadata.gz: 672ba33c779d549ffb422125dc480fa81f33f04ece3753f1f2294de9389d1ff6b91607ad3340db86cdef47e80282cbbd6e61d06fadd5f1c4e6e0a42115a1470b
7
- data.tar.gz: 250a1fc1938e2be8090e772dddd2b3f3ca83e7c9f899cf2ace594750b5368b2e2a9ed538fe618ae863fbb88829c8bd116a1f1185fc5e88593fea4ab1aa7d0c3d
6
+ metadata.gz: cd917c4f792476b45868a6c95c3a1a75ee88c3b49bdb05dd18e30bc637e69fe476d6a0f5d57cbdd86ddbc3e5d07ee24e63f8dd1a23bf207dbfc913e763237b81
7
+ data.tar.gz: b697f2c2897405954a4c66437515648b4e3e18631bf3cb9059ef0e221a8bf5412d0bd1b744099ece0e894fc278406765c0754766347011507374ae69fa0642cc
data/Gemfile CHANGED
@@ -2,9 +2,9 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
+ gem 'asciidoctor'
5
6
  gem 'coveralls'
6
- gem 'rake'
7
7
  gem 'minitest'
8
- gem 'yard'
9
- gem 'asciidoctor'
8
+ gem 'rake'
10
9
  gem 'rubocop'
10
+ gem 'yard'
@@ -1,16 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cri (2.7.0)
4
+ cri (2.7.1)
5
5
  colored (~> 1.2)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  asciidoctor (1.5.2)
11
- ast (2.0.0)
12
- astrolabe (1.3.0)
13
- parser (>= 2.2.0.pre.3, < 3.0)
11
+ ast (2.3.0)
14
12
  colored (1.2)
15
13
  coveralls (0.8.1)
16
14
  json (~> 1.8)
@@ -27,22 +25,22 @@ GEM
27
25
  mime-types (2.5)
28
26
  minitest (5.6.1)
29
27
  netrc (0.10.3)
30
- parser (2.2.2.2)
31
- ast (>= 1.1, < 3.0)
32
- powerpack (0.1.0)
33
- rainbow (2.0.0)
28
+ parser (2.3.3.1)
29
+ ast (~> 2.2)
30
+ powerpack (0.1.1)
31
+ rainbow (2.1.0)
34
32
  rake (10.4.2)
35
33
  rest-client (1.8.0)
36
34
  http-cookie (>= 1.0.2, < 2.0)
37
35
  mime-types (>= 1.16, < 3.0)
38
36
  netrc (~> 0.7)
39
- rubocop (0.30.1)
40
- astrolabe (~> 1.3)
41
- parser (>= 2.2.2.1, < 3.0)
37
+ rubocop (0.46.0)
38
+ parser (>= 2.3.1.1, < 3.0)
42
39
  powerpack (~> 0.1)
43
40
  rainbow (>= 1.99.1, < 3.0)
44
- ruby-progressbar (~> 1.4)
45
- ruby-progressbar (1.7.5)
41
+ ruby-progressbar (~> 1.7)
42
+ unicode-display_width (~> 1.0, >= 1.0.1)
43
+ ruby-progressbar (1.8.1)
46
44
  simplecov (0.10.0)
47
45
  docile (~> 1.1.0)
48
46
  json (~> 1.8)
@@ -55,6 +53,7 @@ GEM
55
53
  unf (0.1.4)
56
54
  unf_ext
57
55
  unf_ext (0.0.7.1)
56
+ unicode-display_width (1.1.1)
58
57
  yard (0.8.7.6)
59
58
 
60
59
  PLATFORMS
@@ -69,3 +68,6 @@ DEPENDENCIES
69
68
  rake
70
69
  rubocop
71
70
  yard
71
+
72
+ BUNDLED WITH
73
+ 1.13.6
data/NEWS.md CHANGED
@@ -1,6 +1,13 @@
1
1
  Cri News
2
2
  ========
3
3
 
4
+ 2.7.1
5
+ -----
6
+
7
+ Fixes:
8
+
9
+ * Fixed some grammatical mistakes
10
+
4
11
  2.7.0
5
12
  -----
6
13
 
@@ -6,13 +6,13 @@ link:https://coveralls.io/r/ddfreyne/cri[image:http://img.shields.io/coveralls/d
6
6
  link:https://codeclimate.com/github/ddfreyne/cri[image:http://img.shields.io/codeclimate/github/ddfreyne/cri.svg[]]
7
7
  link:http://inch-ci.org/github/ddfreyne/cri/[image:http://inch-ci.org/github/ddfreyne/cri.svg[]]
8
8
 
9
- Cri is a library for building easy-to-use commandline tools with support for
9
+ Cri is a library for building easy-to-use command-line tools with support for
10
10
  nested commands.
11
11
 
12
12
  == Usage ==
13
13
 
14
14
  The central concept in Cri is the _command_, which has option definitions as
15
- well as code for actually executing itself. In Cri, the commandline tool
15
+ well as code for actually executing itself. In Cri, the command-line tool
16
16
  itself is a command as well.
17
17
 
18
18
  Here’s a sample command definition:
@@ -45,7 +45,7 @@ end
45
45
  --------------------------------------------------------------------------------
46
46
 
47
47
  To run this command, invoke the `#run` method with the raw arguments. For
48
- example, for a root command (the commandline tool itself), the command could
48
+ example, for a root command (the command-line tool itself), the command could
49
49
  be called like this:
50
50
 
51
51
  [source,ruby]
@@ -84,7 +84,7 @@ description 'This command does a lot of stuff. I really mean a lot.'
84
84
  --------------------------------------------------------------------------------
85
85
 
86
86
  These lines of the command definition specify the name of the command (or the
87
- commandline tool, if the command is the root command), the usage, a list of
87
+ command-line tool, if the command is the root command), the usage, a list of
88
88
  aliases that can be used to call this command, a one-line summary and a (long)
89
89
  description. The usage should not include a “usage:” prefix nor the name of
90
90
  the supercommand, because the latter will be automatically prepended.
@@ -174,7 +174,7 @@ into manageable pieces.
174
174
 
175
175
  === Subcommands ===
176
176
 
177
- Commands can have subcommands. For example, the `git` commandline tool would be
177
+ Commands can have subcommands. For example, the `git` command-line tool would be
178
178
  represented by a command that has subcommands named `commit`, `add`, and so on.
179
179
  Commands with subcommands do not use a run block; execution will always be
180
180
  dispatched to a subcommand (or none, if no subcommand is found).
data/Rakefile CHANGED
@@ -22,8 +22,10 @@ task :test_unit do
22
22
  end
23
23
  end
24
24
 
25
- RuboCop::RakeTask.new(:test_style)
25
+ RuboCop::RakeTask.new(:test_style) do |task|
26
+ task.options = %w(--display-cop-names --format simple)
27
+ end
26
28
 
27
- task :test => [:test_unit, :test_style]
29
+ task test: [:test_unit, :test_style]
28
30
 
29
- task :default => :test
31
+ task default: :test
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
7
7
  s.name = 'cri'
8
8
  s.version = Cri::VERSION
9
9
  s.homepage = 'http://stoneship.org/software/cri/' # TODO: CREATE A WEB SITE YOU SILLY PERSON
10
- s.summary = 'a library for building easy-to-use commandline tools'
11
- s.description = 'Cri allows building easy-to-use commandline interfaces with support for subcommands.'
10
+ s.summary = 'a library for building easy-to-use command-line tools'
11
+ s.description = 'Cri allows building easy-to-use command-line interfaces with support for subcommands.'
12
12
  s.license = 'MIT'
13
13
 
14
14
  s.author = 'Denis Defreyne'
data/lib/cri.rb CHANGED
@@ -1,8 +1,6 @@
1
- # encoding: utf-8
2
-
3
1
  require 'cri/version'
4
2
 
5
- # The namespace for Cri, a library for building easy-to-use commandline tools
3
+ # The namespace for Cri, a library for building easy-to-use command-line tools
6
4
  # with support for nested commands.
7
5
  module Cri
8
6
  # A generic error class for all Cri-specific errors.
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Cri
4
2
  # Represents an array of arguments. It is an array that strips separator
5
3
  # arguments (`--`) but provides a `#raw` method to get the raw arguments
@@ -1,8 +1,6 @@
1
- # encoding: utf-8
2
-
3
1
  module Cri
4
- # Cri::Command represents a command that can be executed on the commandline.
5
- # It is also used for the commandline tool itself.
2
+ # Cri::Command represents a command that can be executed on the command line.
3
+ # It is also used for the command-line tool itself.
6
4
  class Command
7
5
  # Delegate used for partitioning the list of arguments and options. This
8
6
  # delegate will stop the parser as soon as the first argument, i.e. the
@@ -25,8 +23,7 @@ module Cri
25
23
  # @param [Cri::OptionParser] option_parser The option parser
26
24
  #
27
25
  # @return [void]
28
- def option_added(_key, _value, _option_parser)
29
- end
26
+ def option_added(_key, _value, _option_parser); end
30
27
 
31
28
  # Called when an argument is parsed.
32
29
  #
@@ -47,7 +44,7 @@ module Cri
47
44
 
48
45
  # @return [Set<Cri::Command>] This command’s subcommands
49
46
  attr_accessor :commands
50
- alias_method :subcommands, :commands
47
+ alias subcommands commands
51
48
 
52
49
  # @return [String] The name
53
50
  attr_accessor :name
@@ -69,7 +66,7 @@ module Cri
69
66
  # @return [Boolean] true if the command is hidden (e.g. because it is
70
67
  # deprecated), false otherwise
71
68
  attr_accessor :hidden
72
- alias_method :hidden?, :hidden
69
+ alias hidden? hidden
73
70
 
74
71
  # @return [Array<Hash>] The list of option definitions
75
72
  attr_accessor :option_definitions
@@ -140,7 +137,7 @@ module Cri
140
137
  if [-1, 0].include? block.arity
141
138
  dsl.instance_eval(&block)
142
139
  else
143
- block.call(dsl)
140
+ yield(dsl)
144
141
  end
145
142
  self
146
143
  end
@@ -177,7 +174,7 @@ module Cri
177
174
  if [-1, 0].include? block.arity
178
175
  dsl.instance_eval(&block)
179
176
  else
180
- block.call(dsl)
177
+ yield(dsl)
181
178
  end
182
179
 
183
180
  # Create command
@@ -217,19 +214,19 @@ module Cri
217
214
  def command_named(name)
218
215
  commands = commands_named(name)
219
216
 
220
- if commands.size < 1
217
+ if commands.empty?
221
218
  $stderr.puts "#{self.name}: unknown command '#{name}'\n"
222
219
  exit 1
223
220
  elsif commands.size > 1
224
221
  $stderr.puts "#{self.name}: '#{name}' is ambiguous:"
225
- $stderr.puts " #{commands.map { |c| c.name }.sort.join(' ') }"
222
+ $stderr.puts " #{commands.map(&:name).sort.join(' ')}"
226
223
  exit 1
227
224
  else
228
225
  commands[0]
229
226
  end
230
227
  end
231
228
 
232
- # Runs the command with the given commandline arguments, possibly invoking
229
+ # Runs the command with the given command-line arguments, possibly invoking
233
230
  # subcommands and passing on the options and arguments.
234
231
  #
235
232
  # @param [Array<String>] opts_and_args A list of unparsed arguments
@@ -261,7 +258,7 @@ module Cri
261
258
  end
262
259
  end
263
260
 
264
- # Runs the actual command with the given commandline arguments, not
261
+ # Runs the actual command with the given command-line arguments, not
265
262
  # invoking any subcommands. If the command does not have an execution
266
263
  # block, an error ir raised.
267
264
  #
@@ -277,7 +274,8 @@ module Cri
277
274
  def run_this(opts_and_args, parent_opts = {})
278
275
  # Parse
279
276
  parser = Cri::OptionParser.new(
280
- opts_and_args, global_option_definitions)
277
+ opts_and_args, global_option_definitions
278
+ )
281
279
  handle_parser_errors_while { parser.run }
282
280
  local_opts = parser.options
283
281
  global_opts = parent_opts.merge(parser.options)
@@ -288,8 +286,8 @@ module Cri
288
286
 
289
287
  # Execute
290
288
  if block.nil?
291
- fail NotImplementedError,
292
- "No implementation available for '#{name}'"
289
+ raise NotImplementedError,
290
+ "No implementation available for '#{name}'"
293
291
  end
294
292
  block.call(global_opts, args, self)
295
293
  end
@@ -341,8 +339,8 @@ module Cri
341
339
  ]
342
340
  end
343
341
 
344
- def handle_parser_errors_while(&block)
345
- block.call
342
+ def handle_parser_errors_while
343
+ yield
346
344
  rescue Cri::OptionParser::IllegalOptionError => e
347
345
  $stderr.puts "#{name}: illegal option -- #{e}"
348
346
  exit 1
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Cri
4
2
  # The command DSL is a class that is used for building and modifying
5
3
  # commands.
@@ -48,7 +46,7 @@ module Cri
48
46
  #
49
47
  # @return [void]
50
48
  def aliases(*args)
51
- @command.aliases = args.flatten.map { |a| a.to_s }
49
+ @command.aliases = args.flatten.map(&:to_s)
52
50
  end
53
51
 
54
52
  # Sets the command summary.
@@ -114,20 +112,20 @@ module Cri
114
112
  hidden = params.fetch(:hidden, false)
115
113
 
116
114
  if short.nil? && long.nil?
117
- fail ArgumentError, 'short and long options cannot both be nil'
115
+ raise ArgumentError, 'short and long options cannot both be nil'
118
116
  end
119
117
 
120
118
  @command.option_definitions << {
121
- :short => short.nil? ? nil : short.to_s,
122
- :long => long.nil? ? nil : long.to_s,
123
- :desc => desc,
124
- :argument => requiredness,
125
- :multiple => multiple,
126
- :block => block,
127
- :hidden => hidden,
119
+ short: short.nil? ? nil : short.to_s,
120
+ long: long.nil? ? nil : long.to_s,
121
+ desc: desc,
122
+ argument: requiredness,
123
+ multiple: multiple,
124
+ block: block,
125
+ hidden: hidden,
128
126
  }
129
127
  end
130
- alias_method :opt, :option
128
+ alias opt option
131
129
 
132
130
  # Adds a new option with a required argument to the command. If a block is
133
131
  # given, it will be executed when the option is successfully parsed.
@@ -148,7 +146,7 @@ module Cri
148
146
  #
149
147
  # @see {#option}
150
148
  def required(short, long, desc, params = {}, &block)
151
- params = params.merge(:argument => :required)
149
+ params = params.merge(argument: :required)
152
150
  option(short, long, desc, params, &block)
153
151
  end
154
152
 
@@ -171,10 +169,10 @@ module Cri
171
169
  #
172
170
  # @see {#option}
173
171
  def flag(short, long, desc, params = {}, &block)
174
- params = params.merge(:argument => :forbidden)
172
+ params = params.merge(argument: :forbidden)
175
173
  option(short, long, desc, params, &block)
176
174
  end
177
- alias_method :forbidden, :flag
175
+ alias forbidden flag
178
176
 
179
177
  # Adds a new option with an optional argument to the command. If a block
180
178
  # is given, it will be executed when the option is successfully parsed.
@@ -195,7 +193,7 @@ module Cri
195
193
  #
196
194
  # @see {#option}
197
195
  def optional(short, long, desc, params = {}, &block)
198
- params = params.merge(:argument => :optional)
196
+ params = params.merge(argument: :optional)
199
197
  option(short, long, desc, params, &block)
200
198
  end
201
199
 
@@ -213,8 +211,8 @@ module Cri
213
211
  # @return [void]
214
212
  def run(&block)
215
213
  unless [2, 3].include?(block.arity)
216
- fail ArgumentError,
217
- 'The block given to Cri::Command#run expects two or three args'
214
+ raise ArgumentError,
215
+ 'The block given to Cri::Command#run expects two or three args'
218
216
  end
219
217
 
220
218
  @command.block = block
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module Cri
4
2
  # A command runner is responsible for the execution of a command. Using it
5
3
  # is optional, but it is useful for commands whose execution block is large.
@@ -40,7 +38,7 @@ module Cri
40
38
  #
41
39
  # @abstract
42
40
  def run
43
- fail NotImplementedError, 'Cri::CommandRunner subclasses must implement #run'
41
+ raise NotImplementedError, 'Cri::CommandRunner subclasses must implement #run'
44
42
  end
45
43
  end
46
44
  end
@@ -1,21 +1,19 @@
1
- # encoding: utf-8
2
-
3
1
  name 'help'
4
2
  usage 'help [command_name]'
5
3
  summary 'show help'
6
4
  description <<-EOS
7
5
  Show help for the given command, or show general help. When no command is
8
6
  given, a list of available commands is displayed, as well as a list of global
9
- commandline options. When a command is given, a command description as well as
10
- command-specific commandline options are shown.
7
+ command-line options. When a command is given, a command description, as well
8
+ as command-specific command-line options, are shown.
11
9
  EOS
12
10
 
13
11
  flag :v, :verbose, 'show more detailed help'
14
12
 
15
13
  run do |opts, args, cmd|
16
14
  if cmd.supercommand.nil?
17
- fail NoHelpAvailableError,
18
- 'No help available because the help command has no supercommand'
15
+ raise NoHelpAvailableError,
16
+ 'No help available because the help command has no supercommand'
19
17
  end
20
18
 
21
19
  is_verbose = opts.fetch(:verbose, false)
@@ -23,5 +21,5 @@ run do |opts, args, cmd|
23
21
  resolved_cmd = args.inject(cmd.supercommand) do |acc, name|
24
22
  acc.command_named(name)
25
23
  end
26
- puts resolved_cmd.help(:verbose => is_verbose, :io => $stdout)
24
+ puts resolved_cmd.help(verbose: is_verbose, io: $stdout)
27
25
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  flag :h, :help, 'show help for this command' do |_value, cmd|
4
2
  puts cmd.help
5
3
  exit 0