toys-core 0.11.1 → 0.11.2
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 +41 -37
- data/lib/toys/core.rb +1 -1
- data/lib/toys/utils/exec.rb +13 -4
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 37117af06be544465a07f95706310e3b8de1ad4dbc58f53e113b2595eed70e47
|
|
4
|
+
data.tar.gz: 6e27a716c74435ff2060838dbde56af35b4df93dcdc671051397755f478cc233
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a9dc2dc2e8287fbdb1c7695ed9111360d7bfcfc17167c6b790b170843988acb198daa8d99050d910ee5ea41876b2bb6c2e22cbab9629e322c9e7687f90a34c99
|
|
7
|
+
data.tar.gz: '03283300b1140b477ae56276a066953eb4fc6c71aa2a14b2e0fbe66cc9934c3afbd30862349ee922d98c4e0b9e80e74e50ba180bddc939dec99ead630eb7ddf2'
|
data/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
-
###
|
|
3
|
+
### v0.11.2 / 2020-09-06
|
|
4
|
+
|
|
5
|
+
* FIXED: Fix a JRuby-specific race condition when capturing exec streams
|
|
6
|
+
|
|
7
|
+
### v0.11.1 / 2020-08-24
|
|
4
8
|
|
|
5
9
|
* DOCS: Minor documentation tweaks.
|
|
6
10
|
|
|
7
|
-
###
|
|
11
|
+
### v0.11.0 / 2020-08-21
|
|
8
12
|
|
|
9
13
|
* ADDED: The load path can be truncated using the `truncate_load_path!` directive.
|
|
10
14
|
* IMPROVED: Generated help for delegates now includes the information for the target tool, plus subtools of the delegate.
|
|
@@ -14,7 +18,7 @@
|
|
|
14
18
|
* FIXED: Exec::Result correctly reports processes that terminated due to signals.
|
|
15
19
|
* FIXED: Fixed a rare Exec capture failure that resulted from a race condition when closing streams.
|
|
16
20
|
|
|
17
|
-
###
|
|
21
|
+
### v0.10.5 / 2020-07-18
|
|
18
22
|
|
|
19
23
|
* IMPROVED: The bundler mixin silences bundler output during bundle setup.
|
|
20
24
|
* 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.
|
|
@@ -22,24 +26,24 @@
|
|
|
22
26
|
* FIXED: Some cases of transitive dependency handling by the bundler mixin.
|
|
23
27
|
* FIXED: Fixed a crash when computing suggestions, when running with a bundle on Ruby 2.6 or earlier.
|
|
24
28
|
|
|
25
|
-
###
|
|
29
|
+
### v0.10.4 / 2020-07-11
|
|
26
30
|
|
|
27
31
|
* IMPROVED: Bundler integration can now handle Toys itself being in the bundle, as long as the version requirements cover the running Toys version.
|
|
28
32
|
* IMPROVED: Passing `static: true` to the `:bundler` mixin installs the bundle at definition rather than execution time.
|
|
29
33
|
|
|
30
|
-
###
|
|
34
|
+
### v0.10.3 / 2020-07-04
|
|
31
35
|
|
|
32
36
|
* FIXED: The `exec_separate_tool` method in the `:exec` mixin no longer throws ENOEXEC on Windows.
|
|
33
37
|
|
|
34
|
-
###
|
|
38
|
+
### v0.10.2 / 2020-07-03
|
|
35
39
|
|
|
36
40
|
* FIXED: The load path no longer loses the toys and toys-core directories after a bundle install.
|
|
37
41
|
|
|
38
|
-
###
|
|
42
|
+
### v0.10.1 / 2020-03-07
|
|
39
43
|
|
|
40
44
|
* FIXED: Setting `:exit_on_nonzero_status` explicitly to false now works as expected.
|
|
41
45
|
|
|
42
|
-
###
|
|
46
|
+
### v0.10.0 / 2020-02-24
|
|
43
47
|
|
|
44
48
|
Functional changes:
|
|
45
49
|
|
|
@@ -69,16 +73,16 @@ Internal interface changes:
|
|
|
69
73
|
* 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.
|
|
70
74
|
* CHANGED: `Toys::Loader` uses an internal monitor rather than including `MonitorMixin`.
|
|
71
75
|
|
|
72
|
-
###
|
|
76
|
+
### v0.9.4 / 2020-01-26
|
|
73
77
|
|
|
74
78
|
* FIXED: Crash in the loader when a non-ruby file appears in a toys directory
|
|
75
79
|
|
|
76
|
-
###
|
|
80
|
+
### v0.9.3 / 2020-01-05
|
|
77
81
|
|
|
78
82
|
* FIXED: `delegate_to` directive could crash if an overriding tool has already been defined.
|
|
79
83
|
* FIXED: A Ruby 2.7 warning when reporting a Toys file syntax error.
|
|
80
84
|
|
|
81
|
-
###
|
|
85
|
+
### v0.9.2 / 2020-01-03
|
|
82
86
|
|
|
83
87
|
* IMPROVED: Mixins can now take real keyword arguments, and will pass them on properly to `on_initialize` and `on_include` blocks.
|
|
84
88
|
* 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.
|
|
@@ -86,11 +90,11 @@ Internal interface changes:
|
|
|
86
90
|
* 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.
|
|
87
91
|
* IMPROVED: There is now a class for middleware specs, making possible a nicer syntax for building a middleware stack.
|
|
88
92
|
|
|
89
|
-
###
|
|
93
|
+
### v0.9.1 / 2019-12-22
|
|
90
94
|
|
|
91
95
|
* IMPROVED: `delegate_to` and `alias_tool` can take symbols as well as strings.
|
|
92
96
|
|
|
93
|
-
###
|
|
97
|
+
### v0.9.0 / 2019-12-02
|
|
94
98
|
|
|
95
99
|
Functional changes:
|
|
96
100
|
|
|
@@ -113,12 +117,12 @@ Internal interface changes:
|
|
|
113
117
|
* ADDED: `Toys::Tool#delegate_to` causes the tool to delegate to another tool.
|
|
114
118
|
* ADDED: The `Toys::Context::Key::DELEGATED_FROM` key provides the delegating context, if any.
|
|
115
119
|
|
|
116
|
-
###
|
|
120
|
+
### v0.8.1 / 2019-11-19
|
|
117
121
|
|
|
118
122
|
* FIXED: Listing subtools would crash if a broken alias was present.
|
|
119
123
|
* DOCUMENTATION: Switched from redcarpet to kramdown, and tried to make some structural fixes.
|
|
120
124
|
|
|
121
|
-
###
|
|
125
|
+
### v0.8.0 / 2019-06-20
|
|
122
126
|
|
|
123
127
|
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.
|
|
124
128
|
|
|
@@ -217,17 +221,17 @@ Changes to internal interfaces:
|
|
|
217
221
|
* ADDED: Range acceptor (`Acceptor::Range`) which validates against a range.
|
|
218
222
|
* ADDED: Class methods `Acceptor.create` and `Acceptor.lookup_well_known`.
|
|
219
223
|
|
|
220
|
-
###
|
|
224
|
+
### v0.7.0 / 2019-01-23
|
|
221
225
|
|
|
222
226
|
* ADDED: Flag groups, which enforce policies around which flags are required.
|
|
223
227
|
* CHANGED: Flags within a group are sorted in help screens.
|
|
224
228
|
* CHANGED: Canonical flag within a flag definition is now the first rather than the last.
|
|
225
229
|
|
|
226
|
-
###
|
|
230
|
+
### v0.6.1 / 2019-01-07
|
|
227
231
|
|
|
228
232
|
* FIXED: The presence of aliases caused subtool listing to crash.
|
|
229
233
|
|
|
230
|
-
###
|
|
234
|
+
### v0.6.0 / 2018-10-22
|
|
231
235
|
|
|
232
236
|
* CHANGED: Replaced Toys::Definition::DataFinder with Toys::Definition::SourceInfo.
|
|
233
237
|
* CHANGED: Removed Toys::Definition#find_data. Use Toys::Definition#source_info and call find_data.
|
|
@@ -236,7 +240,7 @@ Changes to internal interfaces:
|
|
|
236
240
|
from subtool lists.
|
|
237
241
|
* IMPROVED: Optionally omit non-runnable namespaces from recursive subtool lists.
|
|
238
242
|
|
|
239
|
-
###
|
|
243
|
+
### v0.5.0 / 2018-10-07
|
|
240
244
|
|
|
241
245
|
* FIXED: Template instantiation was failing if the hosting tool was priority-masked.
|
|
242
246
|
* ADDED: Several additional characters can optionally be used as tool path delimiters.
|
|
@@ -246,31 +250,31 @@ Changes to internal interfaces:
|
|
|
246
250
|
* IMPROVED: The tool directive can now take an array as the tool name.
|
|
247
251
|
* IMPROVED: The tool directive can now take an `if_defined` argument.
|
|
248
252
|
|
|
249
|
-
###
|
|
253
|
+
### v0.4.5 / 2018-08-05
|
|
250
254
|
|
|
251
255
|
* CHANGED: Dropped preload file feature
|
|
252
256
|
|
|
253
|
-
###
|
|
257
|
+
### v0.4.4 / 2018-07-21
|
|
254
258
|
|
|
255
259
|
* FIXED: Utils::Exec wasn't closing streams after copying.
|
|
256
260
|
* IMPROVED: Utils::Exec::Controller can capture or redirect the remainder of a controlled stream.
|
|
257
261
|
* ADDED: Terminal#ask
|
|
258
262
|
|
|
259
|
-
###
|
|
263
|
+
### v0.4.3 / 2018-07-13
|
|
260
264
|
|
|
261
265
|
* IMPROVED: Utils::Exec methods can now spawn subprocesses in the background
|
|
262
266
|
* IMPROVED: Utils::Exec capture methods can now yield a controller
|
|
263
267
|
|
|
264
|
-
###
|
|
268
|
+
### v0.4.2 / 2018-07-08
|
|
265
269
|
|
|
266
270
|
* FIXED: Raise an error rather than cause unexpected behavior if a mixin is included twice.
|
|
267
271
|
* IMPROVED: The `include?` method extended to support mixin names in a tool dsl.
|
|
268
272
|
|
|
269
|
-
###
|
|
273
|
+
### v0.4.1 / 2018-07-03
|
|
270
274
|
|
|
271
275
|
* FIXED: Terminal#confirm uppercased "N" for the wrong default.
|
|
272
276
|
|
|
273
|
-
###
|
|
277
|
+
### v0.4.0 / 2018-07-03
|
|
274
278
|
|
|
275
279
|
Now declaring this alpha quality. Backward-incompatible changes are still
|
|
276
280
|
possible from this point, but I'll try to avoid them.
|
|
@@ -282,13 +286,13 @@ possible from this point, but I'll try to avoid them.
|
|
|
282
286
|
* IMPROVED: Utils::Gems installation is now much faster.
|
|
283
287
|
* FIXED: Utils::Gems didn't reset the specifications on Ruby 2.3.
|
|
284
288
|
|
|
285
|
-
###
|
|
289
|
+
### v0.3.11 / 2018-07-02
|
|
286
290
|
|
|
287
291
|
* CHANGED: Require Ruby 2.3 or later
|
|
288
292
|
* CHANGED: Renamed "set" directive to "static" to reduce confusion with Tool#set.
|
|
289
293
|
* ADDED: Convenience methods for getting option values
|
|
290
294
|
|
|
291
|
-
###
|
|
295
|
+
### v0.3.10 / 2018-06-30
|
|
292
296
|
|
|
293
297
|
* CHANGED: Dropped Tool#option. Use Tool#get instead.
|
|
294
298
|
* CHANGED: "run" directive renamed to "to_run"
|
|
@@ -297,11 +301,11 @@ possible from this point, but I'll try to avoid them.
|
|
|
297
301
|
* ADDED: Mixins can provide initializers
|
|
298
302
|
* ADDED: Loader can load an inline block
|
|
299
303
|
|
|
300
|
-
###
|
|
304
|
+
### v0.3.9.1 / 2018-06-24
|
|
301
305
|
|
|
302
306
|
* FIXED: Built-in flags were interfering with disable_argument_parsing
|
|
303
307
|
|
|
304
|
-
###
|
|
308
|
+
### v0.3.9 / 2018-06-24
|
|
305
309
|
|
|
306
310
|
* CHANGED: Cli#add_search_path_hierarchy changed the behavior of the base/terminate param
|
|
307
311
|
* CHANGED: Removed alias_as directive since it's incompatible with selective loading.
|
|
@@ -310,7 +314,7 @@ possible from this point, but I'll try to avoid them.
|
|
|
310
314
|
* ADDED: Exec#exec_proc and Exec#exec_tool that supports all the stream redirects
|
|
311
315
|
* IMPROVED: Acceptors can be looked up recursively in the same way as mixins and templates
|
|
312
316
|
|
|
313
|
-
###
|
|
317
|
+
### v0.3.8 / 2018-06-10
|
|
314
318
|
|
|
315
319
|
* CHANGED: Renamed helpers to mixins.
|
|
316
320
|
* CHANGED: ModuleLookup is now a customizable class and can have multiple sources.
|
|
@@ -320,11 +324,11 @@ possible from this point, but I'll try to avoid them.
|
|
|
320
324
|
* IMPROVED: Exec raises an error if passed an unknown option.
|
|
321
325
|
* IMPROVED: Exec now accepts nearly all the same stream specifications as Process#spawn.
|
|
322
326
|
|
|
323
|
-
###
|
|
327
|
+
### v0.3.7.1 / 2018-05-30
|
|
324
328
|
|
|
325
329
|
* No changes.
|
|
326
330
|
|
|
327
|
-
###
|
|
331
|
+
### v0.3.7 / 2018-05-30
|
|
328
332
|
|
|
329
333
|
* CHANGED: Execution runs in the same scope as the DSL, which lets us use normal methods instead of helper-blocks.
|
|
330
334
|
* CHANGED: Renamed "script" to "run", and allow setting of runnable by defining a "run" method
|
|
@@ -337,7 +341,7 @@ possible from this point, but I'll try to avoid them.
|
|
|
337
341
|
* ADDED: Helper modules scoped to the tool hierarchy
|
|
338
342
|
* ADDED: Utility that installs and activates third-party gems.
|
|
339
343
|
|
|
340
|
-
###
|
|
344
|
+
### v0.3.6 / 2018-05-21
|
|
341
345
|
|
|
342
346
|
* CHANGED: Renamed show_version middleware to show_root_version.
|
|
343
347
|
* CHANGED: Reworked set_default_descriptions interface for more flexibility.
|
|
@@ -349,14 +353,14 @@ possible from this point, but I'll try to avoid them.
|
|
|
349
353
|
* IMPROVED: Support custom acceptors.
|
|
350
354
|
* IMPROVED: Highline helper automatically sets use_color based on the type of stdout.
|
|
351
355
|
|
|
352
|
-
###
|
|
356
|
+
### v0.3.5 / 2018-05-15
|
|
353
357
|
|
|
354
358
|
* CHANGED: Exec logic now lives in a utils class.
|
|
355
359
|
* CHANGED: Moved flag and arg blocks from Tool into the DSL.
|
|
356
360
|
* CHANGED: Renamed `execute do` to `script do`, and Tool#executor to Tool#script.
|
|
357
361
|
* IMPROVED: Help display can use `less` if available.
|
|
358
362
|
|
|
359
|
-
###
|
|
363
|
+
### v0.3.4 / 2018-05-14
|
|
360
364
|
|
|
361
365
|
* CHANGED: Renamed switch to flag
|
|
362
366
|
* CHANGED: Renamed Utils::Usage to Utils::HelpText
|
|
@@ -378,7 +382,7 @@ possible from this point, but I'll try to avoid them.
|
|
|
378
382
|
* ADDED: Alias DSL methods `required`, `optional`, and `remaining`.
|
|
379
383
|
* FIXED: Finish definitions for subtools since the desc may depend on it
|
|
380
384
|
|
|
381
|
-
###
|
|
385
|
+
### v0.3.3 / 2018-05-09
|
|
382
386
|
|
|
383
387
|
* CHANGED: Renamed file_utils helper to fileutils.
|
|
384
388
|
* CHANGED: Renamed `doc:` parameter to `docs:`.
|
|
@@ -391,7 +395,7 @@ possible from this point, but I'll try to avoid them.
|
|
|
391
395
|
* IMPROVED: Usage can now customize the left column width and indent
|
|
392
396
|
* IMPROVED: Newlines in documentation are properly indented
|
|
393
397
|
|
|
394
|
-
###
|
|
398
|
+
### v0.3.2 / 2018-05-07
|
|
395
399
|
|
|
396
400
|
* CHANGED: Split core engine out into "toys-core" from the "toys" gem.
|
|
397
401
|
* CHANGED: Renamed path types to "search" and "config" paths, and restricted the former to the CLI.
|
data/lib/toys/core.rb
CHANGED
data/lib/toys/utils/exec.rb
CHANGED
|
@@ -492,7 +492,8 @@ module Toys
|
|
|
492
492
|
#
|
|
493
493
|
class Controller
|
|
494
494
|
## @private
|
|
495
|
-
def initialize(name, controller_streams, captures, pid, join_threads,
|
|
495
|
+
def initialize(name, controller_streams, captures, pid, join_threads,
|
|
496
|
+
result_callback, mutex)
|
|
496
497
|
@name = name
|
|
497
498
|
@in = controller_streams[:in]
|
|
498
499
|
@out = controller_streams[:out]
|
|
@@ -508,6 +509,7 @@ module Toys
|
|
|
508
509
|
end
|
|
509
510
|
@join_threads = join_threads
|
|
510
511
|
@result_callback = result_callback
|
|
512
|
+
@mutex = mutex
|
|
511
513
|
@result = nil
|
|
512
514
|
end
|
|
513
515
|
|
|
@@ -575,7 +577,10 @@ module Toys
|
|
|
575
577
|
stream = stream_for(which)
|
|
576
578
|
@join_threads << ::Thread.new do
|
|
577
579
|
begin
|
|
578
|
-
|
|
580
|
+
data = stream.read
|
|
581
|
+
@mutex.synchronize do
|
|
582
|
+
@captures[which] = data
|
|
583
|
+
end
|
|
579
584
|
ensure
|
|
580
585
|
stream.close
|
|
581
586
|
end
|
|
@@ -940,6 +945,7 @@ module Toys
|
|
|
940
945
|
@parent_streams = []
|
|
941
946
|
@block = block
|
|
942
947
|
@default_stream = @config_opts[:background] ? :null : :inherit
|
|
948
|
+
@mutex = ::Mutex.new
|
|
943
949
|
end
|
|
944
950
|
|
|
945
951
|
def execute
|
|
@@ -977,7 +983,7 @@ module Toys
|
|
|
977
983
|
end
|
|
978
984
|
@child_streams.each(&:close)
|
|
979
985
|
Controller.new(@config_opts[:name], @controller_streams, @captures, pid,
|
|
980
|
-
@join_threads, @config_opts[:result_callback])
|
|
986
|
+
@join_threads, @config_opts[:result_callback], @mutex)
|
|
981
987
|
end
|
|
982
988
|
|
|
983
989
|
def start_process
|
|
@@ -1284,7 +1290,10 @@ module Toys
|
|
|
1284
1290
|
stream = make_out_pipe(key)
|
|
1285
1291
|
@join_threads << ::Thread.new do
|
|
1286
1292
|
begin
|
|
1287
|
-
|
|
1293
|
+
data = stream.read
|
|
1294
|
+
@mutex.synchronize do
|
|
1295
|
+
@captures[key] = data
|
|
1296
|
+
end
|
|
1288
1297
|
ensure
|
|
1289
1298
|
stream.close
|
|
1290
1299
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: toys-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.11.
|
|
4
|
+
version: 0.11.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Daniel Azuma
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-09-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: Toys-Core is the command line tool framework underlying Toys. It can
|
|
14
14
|
be used to create command line executables using the Toys DSL and classes.
|
|
@@ -69,10 +69,10 @@ homepage: https://github.com/dazuma/toys
|
|
|
69
69
|
licenses:
|
|
70
70
|
- MIT
|
|
71
71
|
metadata:
|
|
72
|
-
changelog_uri: https://dazuma.github.io/toys/gems/toys-core/v0.11.
|
|
72
|
+
changelog_uri: https://dazuma.github.io/toys/gems/toys-core/v0.11.2/file.CHANGELOG.html
|
|
73
73
|
source_code_uri: https://github.com/dazuma/toys
|
|
74
74
|
bug_tracker_uri: https://github.com/dazuma/toys/issues
|
|
75
|
-
documentation_uri: https://dazuma.github.io/toys/gems/toys-core/v0.11.
|
|
75
|
+
documentation_uri: https://dazuma.github.io/toys/gems/toys-core/v0.11.2
|
|
76
76
|
post_install_message:
|
|
77
77
|
rdoc_options: []
|
|
78
78
|
require_paths:
|