toys-core 0.10.4 → 0.11.3
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/CHANGELOG.md +64 -34
- data/README.md +5 -5
- data/docs/guide.md +2 -0
- data/lib/toys/acceptor.rb +1 -1
- data/lib/toys/compat.rb +5 -1
- data/lib/toys/core.rb +1 -1
- data/lib/toys/dsl/flag.rb +2 -2
- data/lib/toys/dsl/flag_group.rb +2 -2
- data/lib/toys/dsl/tool.rb +27 -6
- data/lib/toys/loader.rb +71 -31
- data/lib/toys/source_info.rb +22 -23
- data/lib/toys/standard_mixins/bundler.rb +113 -56
- data/lib/toys/utils/exec.rb +126 -34
- data/lib/toys/utils/gems.rb +82 -31
- data/lib/toys/utils/help_text.rb +54 -59
- metadata +4 -5
- data/lib/toys/utils/gems/gemfile.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2345d22178ad2ca256a6099f3b359abaf6641248c3a29256000e40204c618802
|
4
|
+
data.tar.gz: e9874795dd5057d7eca70164f221ec923c0ac17862146f1a9f15cba3c1cfc4e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 852717f2545a44143185d168c374d871ba9495ccece98161b880d8fdf75b0f5929a97998f3d193c700963717c406567f3f365d73f9c6ad5af13270317b2a5a74
|
7
|
+
data.tar.gz: 3c2bb70a9512f058a9ead3feb55c4c658f7ac3357c51f39c47cb9bef081c1c5f876d08f8f45a2d0d716e6a884d22b156c64664177306041e85e411a18075ebd0
|
data/CHANGELOG.md
CHANGED
@@ -1,23 +1,53 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
-
###
|
3
|
+
### v0.11.3 / 2020-09-13
|
4
|
+
|
5
|
+
* FIXED: The Exec library recognizes the argv0 option, and logs it appropriately
|
6
|
+
|
7
|
+
### v0.11.2 / 2020-09-06
|
8
|
+
|
9
|
+
* FIXED: Fix a JRuby-specific race condition when capturing exec streams
|
10
|
+
|
11
|
+
### v0.11.1 / 2020-08-24
|
12
|
+
|
13
|
+
* DOCS: Minor documentation tweaks.
|
14
|
+
|
15
|
+
### v0.11.0 / 2020-08-21
|
16
|
+
|
17
|
+
* ADDED: The load path can be truncated using the `truncate_load_path!` directive.
|
18
|
+
* IMPROVED: Generated help for delegates now includes the information for the target tool, plus subtools of the delegate.
|
19
|
+
* IMPROVED: The `:bundler` mixin searches for `gems.rb` and `.gems.rb` in addition to `Gemfile`.
|
20
|
+
* IMPROVED: The `:budnler` mixin can load a specific Gemfile path.
|
21
|
+
* FIXED: The loader can now find data and lib directories at the root level of a Toys directory.
|
22
|
+
* FIXED: Exec::Result correctly reports processes that terminated due to signals.
|
23
|
+
* FIXED: Fixed a rare Exec capture failure that resulted from a race condition when closing streams.
|
24
|
+
|
25
|
+
### v0.10.5 / 2020-07-18
|
26
|
+
|
27
|
+
* IMPROVED: The bundler mixin silences bundler output during bundle setup.
|
28
|
+
* IMPROVED: The bundler mixin allows toys and toys-core to be in the Gemfile. It checks their version requirements against the running Toys version, and either adds the corret version to the bundle or raises IncompatibleToysError.
|
29
|
+
* IMPROVED: The bundler mixin automatically updates the bundle if install fails (typically because a transitive dependency has been explicitly updated.)
|
30
|
+
* FIXED: Some cases of transitive dependency handling by the bundler mixin.
|
31
|
+
* FIXED: Fixed a crash when computing suggestions, when running with a bundle on Ruby 2.6 or earlier.
|
32
|
+
|
33
|
+
### v0.10.4 / 2020-07-11
|
4
34
|
|
5
35
|
* IMPROVED: Bundler integration can now handle Toys itself being in the bundle, as long as the version requirements cover the running Toys version.
|
6
36
|
* IMPROVED: Passing `static: true` to the `:bundler` mixin installs the bundle at definition rather than execution time.
|
7
37
|
|
8
|
-
###
|
38
|
+
### v0.10.3 / 2020-07-04
|
9
39
|
|
10
40
|
* FIXED: The `exec_separate_tool` method in the `:exec` mixin no longer throws ENOEXEC on Windows.
|
11
41
|
|
12
|
-
###
|
42
|
+
### v0.10.2 / 2020-07-03
|
13
43
|
|
14
44
|
* FIXED: The load path no longer loses the toys and toys-core directories after a bundle install.
|
15
45
|
|
16
|
-
###
|
46
|
+
### v0.10.1 / 2020-03-07
|
17
47
|
|
18
48
|
* FIXED: Setting `:exit_on_nonzero_status` explicitly to false now works as expected.
|
19
49
|
|
20
|
-
###
|
50
|
+
### v0.10.0 / 2020-02-24
|
21
51
|
|
22
52
|
Functional changes:
|
23
53
|
|
@@ -47,16 +77,16 @@ Internal interface changes:
|
|
47
77
|
* CHANGED: `Toys::CLI.default_logger` removed and replaced with `Toys::CLI.default_logger_factory`. In general, global loggers for CLI are now discouraged because they are not thread-safe.
|
48
78
|
* CHANGED: `Toys::Loader` uses an internal monitor rather than including `MonitorMixin`.
|
49
79
|
|
50
|
-
###
|
80
|
+
### v0.9.4 / 2020-01-26
|
51
81
|
|
52
82
|
* FIXED: Crash in the loader when a non-ruby file appears in a toys directory
|
53
83
|
|
54
|
-
###
|
84
|
+
### v0.9.3 / 2020-01-05
|
55
85
|
|
56
86
|
* FIXED: `delegate_to` directive could crash if an overriding tool has already been defined.
|
57
87
|
* FIXED: A Ruby 2.7 warning when reporting a Toys file syntax error.
|
58
88
|
|
59
|
-
###
|
89
|
+
### v0.9.2 / 2020-01-03
|
60
90
|
|
61
91
|
* IMPROVED: Mixins can now take real keyword arguments, and will pass them on properly to `on_initialize` and `on_include` blocks.
|
62
92
|
* CHANGED: `Toys::Utils::Exec` and the `:exec` mixin methods now take real keyword arguments rather than an `opts` hash. This means you should use keywords (or the double-splat operator) to avoid a deprecation warning on Ruby 2.7.
|
@@ -64,11 +94,11 @@ Internal interface changes:
|
|
64
94
|
* IMPROVED: `Toys::Loader` is now thread-safe. This means it is now possible for a single `Toys::CLI` to run multiple tools in different threads.
|
65
95
|
* IMPROVED: There is now a class for middleware specs, making possible a nicer syntax for building a middleware stack.
|
66
96
|
|
67
|
-
###
|
97
|
+
### v0.9.1 / 2019-12-22
|
68
98
|
|
69
99
|
* IMPROVED: `delegate_to` and `alias_tool` can take symbols as well as strings.
|
70
100
|
|
71
|
-
###
|
101
|
+
### v0.9.0 / 2019-12-02
|
72
102
|
|
73
103
|
Functional changes:
|
74
104
|
|
@@ -91,12 +121,12 @@ Internal interface changes:
|
|
91
121
|
* ADDED: `Toys::Tool#delegate_to` causes the tool to delegate to another tool.
|
92
122
|
* ADDED: The `Toys::Context::Key::DELEGATED_FROM` key provides the delegating context, if any.
|
93
123
|
|
94
|
-
###
|
124
|
+
### v0.8.1 / 2019-11-19
|
95
125
|
|
96
126
|
* FIXED: Listing subtools would crash if a broken alias was present.
|
97
127
|
* DOCUMENTATION: Switched from redcarpet to kramdown, and tried to make some structural fixes.
|
98
128
|
|
99
|
-
###
|
129
|
+
### v0.8.0 / 2019-06-20
|
100
130
|
|
101
131
|
This is a major update with significant new features and a bunch of fixes. It also includes a significant amount of internal reorganization and cleanup, some of which resulted in backward incompatible changes. Basic use should not be affected. All signifiant features planned for beta are now implemented.
|
102
132
|
|
@@ -195,17 +225,17 @@ Changes to internal interfaces:
|
|
195
225
|
* ADDED: Range acceptor (`Acceptor::Range`) which validates against a range.
|
196
226
|
* ADDED: Class methods `Acceptor.create` and `Acceptor.lookup_well_known`.
|
197
227
|
|
198
|
-
###
|
228
|
+
### v0.7.0 / 2019-01-23
|
199
229
|
|
200
230
|
* ADDED: Flag groups, which enforce policies around which flags are required.
|
201
231
|
* CHANGED: Flags within a group are sorted in help screens.
|
202
232
|
* CHANGED: Canonical flag within a flag definition is now the first rather than the last.
|
203
233
|
|
204
|
-
###
|
234
|
+
### v0.6.1 / 2019-01-07
|
205
235
|
|
206
236
|
* FIXED: The presence of aliases caused subtool listing to crash.
|
207
237
|
|
208
|
-
###
|
238
|
+
### v0.6.0 / 2018-10-22
|
209
239
|
|
210
240
|
* CHANGED: Replaced Toys::Definition::DataFinder with Toys::Definition::SourceInfo.
|
211
241
|
* CHANGED: Removed Toys::Definition#find_data. Use Toys::Definition#source_info and call find_data.
|
@@ -214,7 +244,7 @@ Changes to internal interfaces:
|
|
214
244
|
from subtool lists.
|
215
245
|
* IMPROVED: Optionally omit non-runnable namespaces from recursive subtool lists.
|
216
246
|
|
217
|
-
###
|
247
|
+
### v0.5.0 / 2018-10-07
|
218
248
|
|
219
249
|
* FIXED: Template instantiation was failing if the hosting tool was priority-masked.
|
220
250
|
* ADDED: Several additional characters can optionally be used as tool path delimiters.
|
@@ -224,31 +254,31 @@ Changes to internal interfaces:
|
|
224
254
|
* IMPROVED: The tool directive can now take an array as the tool name.
|
225
255
|
* IMPROVED: The tool directive can now take an `if_defined` argument.
|
226
256
|
|
227
|
-
###
|
257
|
+
### v0.4.5 / 2018-08-05
|
228
258
|
|
229
259
|
* CHANGED: Dropped preload file feature
|
230
260
|
|
231
|
-
###
|
261
|
+
### v0.4.4 / 2018-07-21
|
232
262
|
|
233
263
|
* FIXED: Utils::Exec wasn't closing streams after copying.
|
234
264
|
* IMPROVED: Utils::Exec::Controller can capture or redirect the remainder of a controlled stream.
|
235
265
|
* ADDED: Terminal#ask
|
236
266
|
|
237
|
-
###
|
267
|
+
### v0.4.3 / 2018-07-13
|
238
268
|
|
239
269
|
* IMPROVED: Utils::Exec methods can now spawn subprocesses in the background
|
240
270
|
* IMPROVED: Utils::Exec capture methods can now yield a controller
|
241
271
|
|
242
|
-
###
|
272
|
+
### v0.4.2 / 2018-07-08
|
243
273
|
|
244
274
|
* FIXED: Raise an error rather than cause unexpected behavior if a mixin is included twice.
|
245
275
|
* IMPROVED: The `include?` method extended to support mixin names in a tool dsl.
|
246
276
|
|
247
|
-
###
|
277
|
+
### v0.4.1 / 2018-07-03
|
248
278
|
|
249
279
|
* FIXED: Terminal#confirm uppercased "N" for the wrong default.
|
250
280
|
|
251
|
-
###
|
281
|
+
### v0.4.0 / 2018-07-03
|
252
282
|
|
253
283
|
Now declaring this alpha quality. Backward-incompatible changes are still
|
254
284
|
possible from this point, but I'll try to avoid them.
|
@@ -260,13 +290,13 @@ possible from this point, but I'll try to avoid them.
|
|
260
290
|
* IMPROVED: Utils::Gems installation is now much faster.
|
261
291
|
* FIXED: Utils::Gems didn't reset the specifications on Ruby 2.3.
|
262
292
|
|
263
|
-
###
|
293
|
+
### v0.3.11 / 2018-07-02
|
264
294
|
|
265
295
|
* CHANGED: Require Ruby 2.3 or later
|
266
296
|
* CHANGED: Renamed "set" directive to "static" to reduce confusion with Tool#set.
|
267
297
|
* ADDED: Convenience methods for getting option values
|
268
298
|
|
269
|
-
###
|
299
|
+
### v0.3.10 / 2018-06-30
|
270
300
|
|
271
301
|
* CHANGED: Dropped Tool#option. Use Tool#get instead.
|
272
302
|
* CHANGED: "run" directive renamed to "to_run"
|
@@ -275,11 +305,11 @@ possible from this point, but I'll try to avoid them.
|
|
275
305
|
* ADDED: Mixins can provide initializers
|
276
306
|
* ADDED: Loader can load an inline block
|
277
307
|
|
278
|
-
###
|
308
|
+
### v0.3.9.1 / 2018-06-24
|
279
309
|
|
280
310
|
* FIXED: Built-in flags were interfering with disable_argument_parsing
|
281
311
|
|
282
|
-
###
|
312
|
+
### v0.3.9 / 2018-06-24
|
283
313
|
|
284
314
|
* CHANGED: Cli#add_search_path_hierarchy changed the behavior of the base/terminate param
|
285
315
|
* CHANGED: Removed alias_as directive since it's incompatible with selective loading.
|
@@ -288,7 +318,7 @@ possible from this point, but I'll try to avoid them.
|
|
288
318
|
* ADDED: Exec#exec_proc and Exec#exec_tool that supports all the stream redirects
|
289
319
|
* IMPROVED: Acceptors can be looked up recursively in the same way as mixins and templates
|
290
320
|
|
291
|
-
###
|
321
|
+
### v0.3.8 / 2018-06-10
|
292
322
|
|
293
323
|
* CHANGED: Renamed helpers to mixins.
|
294
324
|
* CHANGED: ModuleLookup is now a customizable class and can have multiple sources.
|
@@ -298,11 +328,11 @@ possible from this point, but I'll try to avoid them.
|
|
298
328
|
* IMPROVED: Exec raises an error if passed an unknown option.
|
299
329
|
* IMPROVED: Exec now accepts nearly all the same stream specifications as Process#spawn.
|
300
330
|
|
301
|
-
###
|
331
|
+
### v0.3.7.1 / 2018-05-30
|
302
332
|
|
303
333
|
* No changes.
|
304
334
|
|
305
|
-
###
|
335
|
+
### v0.3.7 / 2018-05-30
|
306
336
|
|
307
337
|
* CHANGED: Execution runs in the same scope as the DSL, which lets us use normal methods instead of helper-blocks.
|
308
338
|
* CHANGED: Renamed "script" to "run", and allow setting of runnable by defining a "run" method
|
@@ -315,7 +345,7 @@ possible from this point, but I'll try to avoid them.
|
|
315
345
|
* ADDED: Helper modules scoped to the tool hierarchy
|
316
346
|
* ADDED: Utility that installs and activates third-party gems.
|
317
347
|
|
318
|
-
###
|
348
|
+
### v0.3.6 / 2018-05-21
|
319
349
|
|
320
350
|
* CHANGED: Renamed show_version middleware to show_root_version.
|
321
351
|
* CHANGED: Reworked set_default_descriptions interface for more flexibility.
|
@@ -327,14 +357,14 @@ possible from this point, but I'll try to avoid them.
|
|
327
357
|
* IMPROVED: Support custom acceptors.
|
328
358
|
* IMPROVED: Highline helper automatically sets use_color based on the type of stdout.
|
329
359
|
|
330
|
-
###
|
360
|
+
### v0.3.5 / 2018-05-15
|
331
361
|
|
332
362
|
* CHANGED: Exec logic now lives in a utils class.
|
333
363
|
* CHANGED: Moved flag and arg blocks from Tool into the DSL.
|
334
364
|
* CHANGED: Renamed `execute do` to `script do`, and Tool#executor to Tool#script.
|
335
365
|
* IMPROVED: Help display can use `less` if available.
|
336
366
|
|
337
|
-
###
|
367
|
+
### v0.3.4 / 2018-05-14
|
338
368
|
|
339
369
|
* CHANGED: Renamed switch to flag
|
340
370
|
* CHANGED: Renamed Utils::Usage to Utils::HelpText
|
@@ -356,7 +386,7 @@ possible from this point, but I'll try to avoid them.
|
|
356
386
|
* ADDED: Alias DSL methods `required`, `optional`, and `remaining`.
|
357
387
|
* FIXED: Finish definitions for subtools since the desc may depend on it
|
358
388
|
|
359
|
-
###
|
389
|
+
### v0.3.3 / 2018-05-09
|
360
390
|
|
361
391
|
* CHANGED: Renamed file_utils helper to fileutils.
|
362
392
|
* CHANGED: Renamed `doc:` parameter to `docs:`.
|
@@ -369,7 +399,7 @@ possible from this point, but I'll try to avoid them.
|
|
369
399
|
* IMPROVED: Usage can now customize the left column width and indent
|
370
400
|
* IMPROVED: Newlines in documentation are properly indented
|
371
401
|
|
372
|
-
###
|
402
|
+
### v0.3.2 / 2018-05-07
|
373
403
|
|
374
404
|
* CHANGED: Split core engine out into "toys-core" from the "toys" gem.
|
375
405
|
* CHANGED: Renamed path types to "search" and "config" paths, and restricted the former to the CLI.
|
data/README.md
CHANGED
@@ -258,7 +258,7 @@ itself. However, the `toys-core` gem is a dependency, and your users will need
|
|
258
258
|
to have it installed. You could alleviate this by wrapping your executable in a
|
259
259
|
gem that can declare `toys-core` as a dependency explicitly.
|
260
260
|
|
261
|
-
The [examples directory](https://github.com/dazuma/toys/tree/
|
261
|
+
The [examples directory](https://github.com/dazuma/toys/tree/main/toys-core/examples)
|
262
262
|
includes a few simple examples that you can use as a starting point.
|
263
263
|
|
264
264
|
To experiment with the examples, clone the Toys repo from GitHub:
|
@@ -272,7 +272,7 @@ Navigate to the simple-gem example:
|
|
272
272
|
|
273
273
|
This example wraps the simple "greet" executable that we
|
274
274
|
[covered earlier](#Add_some_functionality) in a gem. You can see the
|
275
|
-
[executable file](https://github.com/dazuma/toys/tree/
|
275
|
+
[executable file](https://github.com/dazuma/toys/tree/main/toys-core/examples/simple-gem/bin/toys-core-simple-example)
|
276
276
|
in the bin directory.
|
277
277
|
|
278
278
|
Try it out by building and installing the gem. From the `examples/simple-gem`
|
@@ -297,16 +297,16 @@ break it up into multiple files. The multi-file gem example demonstrates this.
|
|
297
297
|
$ cd ../multi-file-gem
|
298
298
|
|
299
299
|
This executable's implementation resides in its
|
300
|
-
[lib directory](https://github.com/dazuma/toys/tree/
|
300
|
+
[lib directory](https://github.com/dazuma/toys/tree/main/toys-core/examples/multi-file-gem/lib),
|
301
301
|
a technique that may be familiar to writers of command line executables. More
|
302
302
|
interestingly, the tools themselves are no longer defined in a block passed to
|
303
303
|
the CLI object, but have been moved into a separate
|
304
|
-
["tools" directory](https://github.com/dazuma/toys/tree/
|
304
|
+
["tools" directory](https://github.com/dazuma/toys/tree/main/toys-core/examples/multi-file-gem/tools).
|
305
305
|
This directory has the same structure and supports the same features that are
|
306
306
|
available when writing complex sets of tools in a `.toys` directory. You then
|
307
307
|
configure the CLI object to look in this directory for its tools definitions,
|
308
308
|
as you can see in
|
309
|
-
[the code](https://github.com/dazuma/toys/tree/
|
309
|
+
[the code](https://github.com/dazuma/toys/tree/main/toys-core/examples/multi-file-gem/lib/toys-core-multi-gem-example.rb).
|
310
310
|
|
311
311
|
Try it out now. From the `examples/multi-file-gem` directory, run:
|
312
312
|
|
data/docs/guide.md
CHANGED
data/lib/toys/acceptor.rb
CHANGED
@@ -498,7 +498,7 @@ module Toys
|
|
498
498
|
# well-known acceptor.
|
499
499
|
#
|
500
500
|
# @param spec [Object] See the description for recognized values.
|
501
|
-
# @param options [Hash] Additional options to pass to the
|
501
|
+
# @param options [Hash] Additional options to pass to the acceptor.
|
502
502
|
# @param block [Proc] See the description for recognized forms.
|
503
503
|
# @return [Toys::Acceptor::Base,Proc]
|
504
504
|
#
|
data/lib/toys/compat.rb
CHANGED
@@ -33,7 +33,11 @@ module Toys
|
|
33
33
|
require "did_you_mean"
|
34
34
|
rescue ::LoadError
|
35
35
|
require "rubygems"
|
36
|
-
|
36
|
+
begin
|
37
|
+
require "did_you_mean"
|
38
|
+
rescue ::LoadError
|
39
|
+
# Oh well, it's not available
|
40
|
+
end
|
37
41
|
end
|
38
42
|
@supports_suggestions = defined?(::DidYouMean::SpellChecker)
|
39
43
|
end
|
data/lib/toys/core.rb
CHANGED
data/lib/toys/dsl/flag.rb
CHANGED
@@ -75,8 +75,8 @@ module Toys
|
|
75
75
|
# string (e.g. `"foo"`) is taken as the value. Otherwise, the
|
76
76
|
# following argument is taken as the value (e.g. for `--abc foo`, the
|
77
77
|
# value is set to `"foo"`.) The following argument is treated as the
|
78
|
-
# value even if it looks like a flag (e.g. `--abc --
|
79
|
-
# string `"--
|
78
|
+
# value even if it looks like a flag (e.g. `--abc --def` causes the
|
79
|
+
# string `"--def"` to be taken as the value.)
|
80
80
|
# * `--abc[=VAL]` : A long flag that takes an optional value. If this
|
81
81
|
# argument appears with a value attached (e.g. `--abc=foo`), the
|
82
82
|
# attached string (e.g. `"foo"`) is taken as the value. Otherwise,
|
data/lib/toys/dsl/flag_group.rb
CHANGED
@@ -79,8 +79,8 @@ module Toys
|
|
79
79
|
# string (e.g. `"foo"`) is taken as the value. Otherwise, the
|
80
80
|
# following argument is taken as the value (e.g. for `--abc foo`, the
|
81
81
|
# value is set to `"foo"`.) The following argument is treated as the
|
82
|
-
# value even if it looks like a flag (e.g. `--abc --
|
83
|
-
# string `"--
|
82
|
+
# value even if it looks like a flag (e.g. `--abc --def` causes the
|
83
|
+
# string `"--def"` to be taken as the value.)
|
84
84
|
# * `--abc[=VAL]` : A long flag that takes an optional value. If this
|
85
85
|
# argument appears with a value attached (e.g. `--abc=foo`), the
|
86
86
|
# attached string (e.g. `"foo"`) is taken as the value. Otherwise,
|
data/lib/toys/dsl/tool.rb
CHANGED
@@ -814,8 +814,8 @@ module Toys
|
|
814
814
|
# string (e.g. `"foo"`) is taken as the value. Otherwise, the
|
815
815
|
# following argument is taken as the value (e.g. for `--abc foo`, the
|
816
816
|
# value is set to `"foo"`.) The following argument is treated as the
|
817
|
-
# value even if it looks like a flag (e.g. `--abc --
|
818
|
-
# string `"--
|
817
|
+
# value even if it looks like a flag (e.g. `--abc --def` causes the
|
818
|
+
# string `"--def"` to be taken as the value.)
|
819
819
|
# * `--abc[=VAL]` : A long flag that takes an optional value. If this
|
820
820
|
# argument appears with a value attached (e.g. `--abc=foo`), the
|
821
821
|
# attached string (e.g. `"foo"`) is taken as the value. Otherwise,
|
@@ -884,7 +884,8 @@ module Toys
|
|
884
884
|
# @param flags [String...] The flags in OptionParser format.
|
885
885
|
# @param accept [Object] An acceptor that validates and/or converts the
|
886
886
|
# value. You may provide either the name of an acceptor you have
|
887
|
-
# defined,
|
887
|
+
# defined, one of the default acceptors provided by OptionParser, or
|
888
|
+
# any other specification recognized by {Toys::Acceptor.create}.
|
888
889
|
# Optional. If not specified, accepts any value as a string.
|
889
890
|
# @param default [Object] The default value. This is the value that will
|
890
891
|
# be set in the context if this flag is not provided on the command
|
@@ -979,7 +980,8 @@ module Toys
|
|
979
980
|
# the execution context.
|
980
981
|
# @param accept [Object] An acceptor that validates and/or converts the
|
981
982
|
# value. You may provide either the name of an acceptor you have
|
982
|
-
# defined,
|
983
|
+
# defined, one of the default acceptors provided by OptionParser, or
|
984
|
+
# any other specification recognized by {Toys::Acceptor.create}.
|
983
985
|
# Optional. If not specified, accepts any value as a string.
|
984
986
|
# @param complete [Object] A specifier for shell tab completion for
|
985
987
|
# values of this arg. This is the empty completion by default. To
|
@@ -1050,7 +1052,8 @@ module Toys
|
|
1050
1052
|
# line. Defaults to `nil`.
|
1051
1053
|
# @param accept [Object] An acceptor that validates and/or converts the
|
1052
1054
|
# value. You may provide either the name of an acceptor you have
|
1053
|
-
# defined,
|
1055
|
+
# defined, one of the default acceptors provided by OptionParser, or
|
1056
|
+
# any other specification recognized by {Toys::Acceptor.create}.
|
1054
1057
|
# Optional. If not specified, accepts any value as a string.
|
1055
1058
|
# @param complete [Object] A specifier for shell tab completion for
|
1056
1059
|
# values of this arg. This is the empty completion by default. To
|
@@ -1121,7 +1124,8 @@ module Toys
|
|
1121
1124
|
# command line. Defaults to the empty array `[]`.
|
1122
1125
|
# @param accept [Object] An acceptor that validates and/or converts the
|
1123
1126
|
# value. You may provide either the name of an acceptor you have
|
1124
|
-
# defined,
|
1127
|
+
# defined, one of the default acceptors provided by OptionParser, or
|
1128
|
+
# any other specification recognized by {Toys::Acceptor.create}.
|
1125
1129
|
# Optional. If not specified, accepts any value as a string.
|
1126
1130
|
# @param complete [Object] A specifier for shell tab completion for
|
1127
1131
|
# values of this arg. This is the empty completion by default. To
|
@@ -1619,6 +1623,23 @@ module Toys
|
|
1619
1623
|
self
|
1620
1624
|
end
|
1621
1625
|
|
1626
|
+
##
|
1627
|
+
# Remove lower-priority sources from the load path. This prevents lower-
|
1628
|
+
# priority sources (such as Toys files from parent or global directories)
|
1629
|
+
# from executing or defining tools.
|
1630
|
+
#
|
1631
|
+
# This works only if no such sources have already loaded yet.
|
1632
|
+
#
|
1633
|
+
# @raise [Toys::ToolDefinitionError] if any lower-priority tools have
|
1634
|
+
# already been loaded.
|
1635
|
+
#
|
1636
|
+
def truncate_load_path!
|
1637
|
+
unless @__loader.stop_loading_at_priority(@__priority)
|
1638
|
+
raise ToolDefinitionError,
|
1639
|
+
"Cannot truncate load path because tools have already been loaded"
|
1640
|
+
end
|
1641
|
+
end
|
1642
|
+
|
1622
1643
|
##
|
1623
1644
|
# Determines whether the current Toys version satisfies the given
|
1624
1645
|
# requirements.
|