toys-core 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26fce1d32fe0161a806a4b6d6d831b546be343290a0d0103c5e6a52e14f2f106
4
- data.tar.gz: b57713c9fd6436f5f90007769663340a4df5599bf9c72f0c9eb160ebcdc7ed8a
3
+ metadata.gz: 88644d1a61c31baed3ea200a6a936f79d5f81227b42c79ceeb949dd7be06d3ad
4
+ data.tar.gz: 85a9544bd4950250ab0797d1fa0a110d949cf677b6739596a90c75b8d1cf8185
5
5
  SHA512:
6
- metadata.gz: f2427161dc5f1635473fa09f5e67c6f3ad58f861669de6c909c03fe55a2b44778e2b905f44b0bbeb250019e583d721296eb1a3adccd62c2f76e4abed99bdd860
7
- data.tar.gz: c9ab4052480bcbd91e3452eba2d2e425013eba043f4d825b4f5a88f92a248ca780368206a5c06b0bf2ea9a67dea93fda8163babef2c64e4147cb38c650486f6a
6
+ metadata.gz: 3f09f94ffd7f77b58981bcd291a46bd354c02b11800d550ee9419b76ea74049efe9aa4833bf8ee4e4d41199f84e926b03577315d61d8512c8808878420453542
7
+ data.tar.gz: 46e24892810dcb54266bad9647b9d2bbb0dde2c283b7e869183103dad84da238ada3dd37581f4a891c84c95af2fa45e33bb72c25e728281ede6027847bd9e984
data/.yardopts CHANGED
@@ -7,3 +7,4 @@
7
7
  README.md
8
8
  LICENSE.md
9
9
  CHANGELOG.md
10
+ docs/getting-started.md
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Release History
2
2
 
3
+ ### 0.3.5 / 2018-05-15
4
+
5
+ * CHANGED: Exec logic now lives in a utils class.
6
+ * CHANGED: Moved flag and arg blocks from Tool into the DSL.
7
+ * CHANGED: Renamed `execute do` to `script do`, and Tool#executor to Tool#script.
8
+ * IMPROVED: Help display can use `less` if available.
9
+
3
10
  ### 0.3.4 / 2018-05-14
4
11
 
5
12
  * CHANGED: Renamed switch to flag
data/README.md CHANGED
@@ -1,15 +1,16 @@
1
1
  # Toys
2
2
 
3
- Toys is a command line binary that lets you build your own suite of command
4
- line tools (with commands and subcommands) using a Ruby DSL. Commands can be
5
- defined globally or scoped to directories.
3
+ Toys is a command line binary that lets you build your own personal suite of
4
+ command line tools using a Ruby DSL. Toys handles argument parsing, error
5
+ reporting, logging, help text, and many other details for you. Toys is designed
6
+ for software developers, IT specialists, and other power users who want to
7
+ write and organize scripts to automate their workflows.
6
8
 
7
9
  Toys-Core is the command line tool framework underlying Toys. It can be used
8
- to create command line binaries using the Toys DSL.
10
+ to create command line binaries using the internal Toys APIs.
9
11
 
10
- ## Quick Start
11
-
12
- (TODO)
12
+ To get started using toys-core for your own command line binary, see the
13
+ {file:docs/getting-started.md Getting Started Guide}.
13
14
 
14
15
  ## Contributing
15
16
 
@@ -0,0 +1,8 @@
1
+ # @title Getting Started
2
+
3
+ # Getting Started With Toys-Core
4
+
5
+ Toys-Core is the command line tool framework underlying Toys. It can be used
6
+ to create command line binaries using the internal Toys APIs.
7
+
8
+ (To be written)
data/lib/toys/cli.rb CHANGED
@@ -292,7 +292,8 @@ module Toys
292
292
  # description fields
293
293
  # * {Toys::Middleware::ShowHelp} adding the `--help` flag
294
294
  # * {Toys::Middleware::HandleUsageErrors}
295
- # * {Toys::Middleware::ShowHelp} providing default behavior for groups
295
+ # * {Toys::Middleware::ShowHelp} providing default behavior for
296
+ # namespaces
296
297
  # * {Toys::Middleware::AddVerbosityFlags} adding the `--verbose` and
297
298
  # `--quiet` flags for managing the logger level
298
299
  #
@@ -49,7 +49,7 @@ module Toys
49
49
  #
50
50
  # optional_arg :recipient, default: "world"
51
51
  #
52
- # execute do
52
+ # script do
53
53
  # puts "Hello, #{self[:recipient]}!"
54
54
  # end
55
55
  # end
@@ -87,9 +87,8 @@ module Toys
87
87
  ##
88
88
  # Create a subtool. You must provide a block defining the subtool.
89
89
  #
90
- # If the subtool is already defined (either as a tool or a group), the old
91
- # definition is discarded and replaced with the new definition. If the old
92
- # tool was a group, all its descendants are also discarded, recursively.
90
+ # If the subtool is already defined (either as a tool or a namespace), the
91
+ # old definition is discarded and replaced with the new definition.
93
92
  #
94
93
  # @param [String] word The name of the subtool
95
94
  #
@@ -103,7 +102,7 @@ module Toys
103
102
  alias name tool
104
103
 
105
104
  ##
106
- # Create an alias in the current group.
105
+ # Create an alias in the current namespace.
107
106
  #
108
107
  # @param [String] word The name of the alias
109
108
  # @param [String] target The target of the alias
@@ -165,9 +164,27 @@ module Toys
165
164
  # displayed with the tool in a subtool list. You may also use the
166
165
  # equivalent method `short_desc`.
167
166
  #
168
- # The description may be provided as a {Toys::Utils::WrappableString}, a
169
- # single string (which will be wrapped), or an array of strings, which will
170
- # be interpreted as string fragments that will be concatenated and wrapped.
167
+ # The description is a {Toys::Utils::WrappableString}, which may be word-
168
+ # wrapped when displayed in a help screen. You may pass a
169
+ # {Toys::Utils::WrappableString} directly to this method, or you may pass
170
+ # any input that can be used to construct a wrappable string:
171
+ #
172
+ # * If you pass a String, its whitespace will be compacted (i.e. tabs,
173
+ # newlines, and multiple consecutive whitespace will be turned into a
174
+ # single space), and it will be word-wrapped on whitespace.
175
+ # * If you pass an Array of Strings, each string will be considered a
176
+ # literal word that cannot be broken, and wrapping will be done across
177
+ # the strings in the array. In this case, whitespace is not compacted.
178
+ #
179
+ # For example, if you pass in a sentence as a simple string, it may be
180
+ # word wrapped when displayed:
181
+ #
182
+ # desc "This sentence may be wrapped."
183
+ #
184
+ # To specify a sentence that should never be word-wrapped, pass it as the
185
+ # sole element of a string array:
186
+ #
187
+ # desc ["This sentence will not be wrapped."]
171
188
  #
172
189
  # @param [Toys::Utils::WrappableString,String,Array<String>] str
173
190
  #
@@ -183,9 +200,18 @@ module Toys
183
200
  # Set the long description for the current tool. The long description is
184
201
  # displayed in the usage documentation for the tool itself.
185
202
  #
186
- # Each string may be provided as a {Toys::Utils::WrappableString}, a single
187
- # string (which will be wrapped), or an array of strings, which will be
188
- # interpreted as string fragments that will be concatenated and wrapped.
203
+ # A long description is a series of descriptions, which are generally
204
+ # displayed in a series of lines/paragraphs. Each individual description
205
+ # uses the form described in the {Toys::ConfigDSL#desc} documentation, and
206
+ # may be word-wrapped when displayed. To insert a blank line, include an
207
+ # empty string as one of the descriptions.
208
+ #
209
+ # Example:
210
+ #
211
+ # long_desc "This is an initial paragraph that might be word wrapped.",
212
+ # "This next paragraph is followed by a blank line.",
213
+ # "",
214
+ # ["This line will not be wrapped."]
189
215
  #
190
216
  # @param [Toys::Utils::WrappableString,String,Array<String>...] strs
191
217
  #
@@ -198,9 +224,12 @@ module Toys
198
224
 
199
225
  ##
200
226
  # Add a flag to the current tool. Each flag must specify a key which
201
- # the executor may use to obtain the flag value from the context.
227
+ # the script may use to obtain the flag value from the context.
202
228
  # You may then provide the flags themselves in `OptionParser` form.
203
229
  #
230
+ # Attributes of the flag may be passed in as arguments to this method, or
231
+ # set in a block passed to this method.
232
+ #
204
233
  # @param [Symbol] key The key to use to retrieve the value from the
205
234
  # execution context.
206
235
  # @param [String...] flags The flags in OptionParser format.
@@ -208,40 +237,41 @@ module Toys
208
237
  # @param [Object] default The default value. This is the value that will
209
238
  # be set in the context if this flag is not provided on the command
210
239
  # line. Defaults to `nil`.
211
- # @param [String,Toys::Utils::WrappableString,
212
- # Array<String,Toys::Utils::WrappableString>] desc Short description
213
- # for the flag. Defaults to empty array.
214
- # @param [String,Toys::Utils::WrappableString,
215
- # Array<String,Toys::Utils::WrappableString>] long_desc Long
216
- # description for the flag. Defaults to empty array.
217
- # @param [Boolean] only_unique If true, any flags that are already
218
- # defined in this tool are removed from this flag. For example, if
219
- # an earlier flag uses `-a`, and this flag wants to use both
220
- # `-a` and `-b`, then only `-b` will be assigned to this flag.
221
- # Defaults to false.
222
240
  # @param [Proc,nil] handler An optional handler for setting/updating the
223
241
  # value. If given, it should take two arguments, the new given value
224
242
  # and the previous value, and it should return the new value that
225
243
  # should be set. The default handler simply replaces the previous
226
244
  # value. i.e. the default is effectively `-> (val, _prev) { val }`.
245
+ # @param [String,Array<String>,Toys::Utils::WrappableString] desc Short
246
+ # description for the flag. See {Toys::ConfigDSL#desc} for a description
247
+ # of the allowed formats. Defaults to the empty string.
248
+ # @param [Array<String,Array<String>,Toys::Utils::WrappableString>] long_desc
249
+ # Long description for the flag. See {Toys::ConfigDSL#long_desc} for a
250
+ # description of the allowed formats. (But note that this param takes
251
+ # an Array of description lines, rather than a series of arguments.)
252
+ # Defaults to the empty array.
253
+ # @param [Boolean] only_unique If true, any flags that are already
254
+ # defined in this tool are removed from this flag. For example, if
255
+ # an earlier flag uses `-a`, and this flag wants to use both
256
+ # `-a` and `-b`, then only `-b` will be assigned to this flag.
257
+ # Defaults to false.
258
+ # @yieldparam flag_dsl [Toys::ConfigDSL::FlagDSL] An object that lets you
259
+ # configure this flag in a block.
227
260
  #
228
261
  def flag(key, *flags,
229
- accept: nil, default: nil, desc: nil, long_desc: nil,
230
- only_unique: false, handler: nil,
231
- &block)
262
+ accept: nil, default: nil, handler: nil, desc: nil, long_desc: nil,
263
+ only_unique: false)
232
264
  return self if _cur_tool.nil?
265
+ flag_dsl = FlagDSL.new(flags, accept, default, handler, desc, long_desc)
266
+ yield flag_dsl if block_given?
233
267
  _cur_tool.lock_definition_path(@path)
234
- _cur_tool.add_flag(key, *flags,
235
- accept: accept, default: default,
236
- desc: desc, long_desc: long_desc,
237
- only_unique: only_unique, handler: handler,
238
- &block)
268
+ flag_dsl._add_to(_cur_tool, key, only_unique)
239
269
  self
240
270
  end
241
271
 
242
272
  ##
243
273
  # Add a required positional argument to the current tool. You must specify
244
- # a key which the executor may use to obtain the argument value from the
274
+ # a key which the script may use to obtain the argument value from the
245
275
  # context.
246
276
  #
247
277
  # @param [Symbol] key The key to use to retrieve the value from the
@@ -249,27 +279,30 @@ module Toys
249
279
  # @param [Object,nil] accept An OptionParser acceptor. Optional.
250
280
  # @param [String] display_name A name to use for display (in help text and
251
281
  # error reports). Defaults to the key in upper case.
252
- # @param [String,Toys::Utils::WrappableString,
253
- # Array<String,Toys::Utils::WrappableString>] desc Short description
254
- # for the arg. Defaults to empty array.
255
- # @param [String,Toys::Utils::WrappableString,
256
- # Array<String,Toys::Utils::WrappableString>] long_desc Long
257
- # description for the arg. Defaults to empty array.
258
- #
259
- def required_arg(key, accept: nil, display_name: nil, desc: nil, long_desc: nil, &block)
282
+ # @param [String,Array<String>,Toys::Utils::WrappableString] desc Short
283
+ # description for the flag. See {Toys::ConfigDSL#desc} for a description
284
+ # of the allowed formats. Defaults to the empty string.
285
+ # @param [Array<String,Array<String>,Toys::Utils::WrappableString>] long_desc
286
+ # Long description for the flag. See {Toys::ConfigDSL#long_desc} for a
287
+ # description of the allowed formats. (But note that this param takes
288
+ # an Array of description lines, rather than a series of arguments.)
289
+ # Defaults to the empty array.
290
+ # @yieldparam arg_dsl [Toys::ConfigDSL::ArgDSL] An object that lets you
291
+ # configure this argument in a block.
292
+ #
293
+ def required_arg(key, accept: nil, display_name: nil, desc: nil, long_desc: nil)
260
294
  return self if _cur_tool.nil?
295
+ arg_dsl = ArgDSL.new(accept, nil, display_name, desc, long_desc)
296
+ yield arg_dsl if block_given?
261
297
  _cur_tool.lock_definition_path(@path)
262
- _cur_tool.add_required_arg(key,
263
- accept: accept, display_name: display_name,
264
- desc: desc, long_desc: long_desc,
265
- &block)
298
+ arg_dsl._add_required_to(_cur_tool, key)
266
299
  self
267
300
  end
268
301
  alias required required_arg
269
302
 
270
303
  ##
271
304
  # Add an optional positional argument to the current tool. You must specify
272
- # a key which the executor may use to obtain the argument value from the
305
+ # a key which the script may use to obtain the argument value from the
273
306
  # context. If an optional argument is not given on the command line, the
274
307
  # value is set to the given default.
275
308
  #
@@ -281,29 +314,32 @@ module Toys
281
314
  # @param [Object,nil] accept An OptionParser acceptor. Optional.
282
315
  # @param [String] display_name A name to use for display (in help text and
283
316
  # error reports). Defaults to the key in upper case.
284
- # @param [String,Toys::Utils::WrappableString,
285
- # Array<String,Toys::Utils::WrappableString>] desc Short description
286
- # for the arg. Defaults to empty array.
287
- # @param [String,Toys::Utils::WrappableString,
288
- # Array<String,Toys::Utils::WrappableString>] long_desc Long
289
- # description for the arg. Defaults to empty array.
317
+ # @param [String,Array<String>,Toys::Utils::WrappableString] desc Short
318
+ # description for the flag. See {Toys::ConfigDSL#desc} for a description
319
+ # of the allowed formats. Defaults to the empty string.
320
+ # @param [Array<String,Array<String>,Toys::Utils::WrappableString>] long_desc
321
+ # Long description for the flag. See {Toys::ConfigDSL#long_desc} for a
322
+ # description of the allowed formats. (But note that this param takes
323
+ # an Array of description lines, rather than a series of arguments.)
324
+ # Defaults to the empty array.
325
+ # @yieldparam arg_dsl [Toys::ConfigDSL::ArgDSL] An object that lets you
326
+ # configure this argument in a block.
290
327
  #
291
328
  def optional_arg(key, default: nil, accept: nil, display_name: nil,
292
- desc: nil, long_desc: nil, &block)
329
+ desc: nil, long_desc: nil)
293
330
  return self if _cur_tool.nil?
331
+ arg_dsl = ArgDSL.new(accept, default, display_name, desc, long_desc)
332
+ yield arg_dsl if block_given?
294
333
  _cur_tool.lock_definition_path(@path)
295
- _cur_tool.add_optional_arg(key,
296
- accept: accept, default: default, display_name: display_name,
297
- desc: desc, long_desc: long_desc,
298
- &block)
334
+ arg_dsl._add_optional_to(_cur_tool, key)
299
335
  self
300
336
  end
301
337
  alias optional optional_arg
302
338
 
303
339
  ##
304
340
  # Specify what should be done with unmatched positional arguments. You must
305
- # specify a key which the executor may use to obtain the remaining args
306
- # from the context.
341
+ # specify a key which the script may use to obtain the remaining args from
342
+ # the context.
307
343
  #
308
344
  # @param [Symbol] key The key to use to retrieve the value from the
309
345
  # execution context.
@@ -313,38 +349,41 @@ module Toys
313
349
  # @param [Object,nil] accept An OptionParser acceptor. Optional.
314
350
  # @param [String] display_name A name to use for display (in help text and
315
351
  # error reports). Defaults to the key in upper case.
316
- # @param [String,Toys::Utils::WrappableString,
317
- # Array<String,Toys::Utils::WrappableString>] desc Short description
318
- # for the arg. Defaults to empty array.
319
- # @param [String,Toys::Utils::WrappableString,
320
- # Array<String,Toys::Utils::WrappableString>] long_desc Long
321
- # description for the arg. Defaults to empty array.
352
+ # @param [String,Array<String>,Toys::Utils::WrappableString] desc Short
353
+ # description for the flag. See {Toys::ConfigDSL#desc} for a description
354
+ # of the allowed formats. Defaults to the empty string.
355
+ # @param [Array<String,Array<String>,Toys::Utils::WrappableString>] long_desc
356
+ # Long description for the flag. See {Toys::ConfigDSL#long_desc} for a
357
+ # description of the allowed formats. (But note that this param takes
358
+ # an Array of description lines, rather than a series of arguments.)
359
+ # Defaults to the empty array.
360
+ # @yieldparam arg_dsl [Toys::ConfigDSL::ArgDSL] An object that lets you
361
+ # configure this argument in a block.
322
362
  #
323
363
  def remaining_args(key, default: [], accept: nil, display_name: nil,
324
- desc: nil, long_desc: nil, &block)
364
+ desc: nil, long_desc: nil)
325
365
  return self if _cur_tool.nil?
366
+ arg_dsl = ArgDSL.new(accept, default, display_name, desc, long_desc)
367
+ yield arg_dsl if block_given?
326
368
  _cur_tool.lock_definition_path(@path)
327
- _cur_tool.set_remaining_args(key,
328
- accept: accept, default: default, display_name: display_name,
329
- desc: desc, long_desc: long_desc,
330
- &block)
369
+ arg_dsl._set_remaining_on(_cur_tool, key)
331
370
  self
332
371
  end
333
372
  alias remaining remaining_args
334
373
 
335
374
  ##
336
- # Specify the executor for this tool. This is a block that will be called,
375
+ # Specify the script for this tool. This is a block that will be called,
337
376
  # with `self` set to a {Toys::Context}.
338
377
  #
339
- def execute(&block)
378
+ def script(&block)
340
379
  return self if _cur_tool.nil?
341
380
  _cur_tool.lock_definition_path(@path)
342
- _cur_tool.executor = block
381
+ _cur_tool.script = block
343
382
  self
344
383
  end
345
384
 
346
385
  ##
347
- # Define a helper method that may be called from this tool's executor.
386
+ # Define a helper method that may be called from this tool's script.
348
387
  # You must provide a name for the method, and a block for the method
349
388
  # definition.
350
389
  #
@@ -359,7 +398,7 @@ module Toys
359
398
  end
360
399
 
361
400
  ##
362
- # Specify that the given module should be mixed in to this tool's executor.
401
+ # Specify that the given module should be mixed in to this tool's script.
363
402
  # Effectively, the module is added to the {Toys::Context} object.
364
403
  # You may either provide a module directly, or specify the name of a
365
404
  # well-known module.
@@ -373,6 +412,175 @@ module Toys
373
412
  self
374
413
  end
375
414
 
415
+ ##
416
+ # DSL for a flag definition block. Lets you set flag attributes in a block
417
+ # instead of a long series of keyword arguments.
418
+ #
419
+ class FlagDSL
420
+ ## @private
421
+ def initialize(flags, accept, default, handler, desc, long_desc)
422
+ @flags = flags
423
+ @accept = accept
424
+ @default = default
425
+ @handler = handler
426
+ @desc = desc
427
+ @long_desc = long_desc
428
+ end
429
+
430
+ ##
431
+ # Add flags in OptionParser format. This may be called multiple times,
432
+ # and the results are cumulative.
433
+ # @param [String...] flags
434
+ #
435
+ def flags(*flags)
436
+ @flags += flags
437
+ self
438
+ end
439
+
440
+ ##
441
+ # Set the OptionParser acceptor.
442
+ # @param [Object] accept
443
+ #
444
+ def accept(accept)
445
+ @accept = accept
446
+ self
447
+ end
448
+
449
+ ##
450
+ # Set the default value.
451
+ # @param [Object] default
452
+ #
453
+ def default(default)
454
+ @default = default
455
+ self
456
+ end
457
+
458
+ ##
459
+ # Set the optional handler for setting/updating the value when a flag is
460
+ # parsed. It should be a Proc taking two arguments, the new given value
461
+ # and the previous value, and it should return the new value that should
462
+ # be set.
463
+ # @param [Proc] handler
464
+ #
465
+ def handler(handler)
466
+ @handler = handler
467
+ self
468
+ end
469
+
470
+ ##
471
+ # Set the short description. See {Toys::ConfigDSL#desc} for the allowed
472
+ # formats.
473
+ # @param [String,Array<String>,Toys::Utils::WrappableString] desc
474
+ #
475
+ def desc(desc)
476
+ @desc = desc
477
+ self
478
+ end
479
+
480
+ ##
481
+ # Adds to the long description. This may be called multiple times, and
482
+ # the results are cumulative. See {Toys::ConfigDSL#long_desc} for the
483
+ # allowed formats.
484
+ # @param [String,Array<String>,Toys::Utils::WrappableString...] long_desc
485
+ #
486
+ def long_desc(*long_desc)
487
+ @long_desc += long_desc
488
+ self
489
+ end
490
+
491
+ ## @private
492
+ def _add_to(tool, key, only_unique)
493
+ tool.add_flag(key, @flags,
494
+ accept: @accept, default: @default, handler: @handler,
495
+ desc: @desc, long_desc: @long_desc,
496
+ only_unique: only_unique)
497
+ end
498
+ end
499
+
500
+ ##
501
+ # DSL for an arg definition block. Lets you set arg attributes in a block
502
+ # instead of a long series of keyword arguments.
503
+ #
504
+ class ArgDSL
505
+ ## @private
506
+ def initialize(accept, default, display_name, desc, long_desc)
507
+ @accept = accept
508
+ @default = default
509
+ @display_name = display_name
510
+ @desc = desc
511
+ @long_desc = long_desc
512
+ end
513
+
514
+ ##
515
+ # Set the OptionParser acceptor.
516
+ # @param [Object] accept
517
+ #
518
+ def accept(accept)
519
+ @accept = accept
520
+ self
521
+ end
522
+
523
+ ##
524
+ # Set the default value.
525
+ # @param [Object] default
526
+ #
527
+ def default(default)
528
+ @default = default
529
+ self
530
+ end
531
+
532
+ ##
533
+ # Set the name of this arg as it appears in help screens.
534
+ # @param [String] display_name
535
+ #
536
+ def display_name(display_name)
537
+ @handler = display_name
538
+ self
539
+ end
540
+
541
+ ##
542
+ # Set the short description. See {Toys::ConfigDSL#desc} for the allowed
543
+ # formats.
544
+ # @param [String,Array<String>,Toys::Utils::WrappableString] desc
545
+ #
546
+ def desc(desc)
547
+ @desc = desc
548
+ self
549
+ end
550
+
551
+ ##
552
+ # Adds to the long description. This may be called multiple times, and
553
+ # the results are cumulative. See {Toys::ConfigDSL#long_desc} for the
554
+ # allowed formats.
555
+ # @param [String,Array<String>,Toys::Utils::WrappableString...] long_desc
556
+ #
557
+ def long_desc(*long_desc)
558
+ @long_desc += long_desc
559
+ self
560
+ end
561
+
562
+ ## @private
563
+ def _add_required_to(tool, key)
564
+ tool.add_required_arg(key,
565
+ accept: @accept, display_name: @display_name,
566
+ desc: @desc, long_desc: @long_desc)
567
+ end
568
+
569
+ ## @private
570
+ def _add_optional_to(tool, key)
571
+ tool.add_optional_arg(key,
572
+ accept: @accept, default: @default, display_name: @display_name,
573
+ desc: @desc, long_desc: @long_desc)
574
+ end
575
+
576
+ ## @private
577
+ def _set_remaining_on(tool, key)
578
+ tool.set_remaining_args(key,
579
+ accept: @accept, default: @default, display_name: @display_name,
580
+ desc: @desc, long_desc: @long_desc)
581
+ end
582
+ end
583
+
376
584
  ## @private
377
585
  def _binding
378
586
  binding