toys 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b82bf46b4d621e2d8c568c3c87e7709a96232805f761bedc9e9fb62b5e46d1ac
4
- data.tar.gz: 86e8687ffde2eecabf121a8b6aa09924a8e83e58da1db70558d2b62a3f394014
3
+ metadata.gz: c52b606c7f0bd27e709c7e019bfb89e1b8772fdb0c112e80dc6e4a4f5ffc50bc
4
+ data.tar.gz: 2b2c90a882e812500c98bf89d3b13d90430e98acfcbedc2a60ef1bdc50a1ad20
5
5
  SHA512:
6
- metadata.gz: 76e7d28e8e236b3239ce2ecf7328a6e684a3b085f317ed151c8a3e4bead6af6c8af9e4f125a2116d83917459e3bf163fbb6cc3264a7019caf6e42f3bedd21f85
7
- data.tar.gz: f2c4a2aef746be262ab489ad12ff3e8321067f939eaa023eac77f0bf1b63484af4b4e3923e241cc4fa00f61a94bbdf40bf424d34460d595672e5c93e3d40a05f
6
+ metadata.gz: 5e9ba6c9e241f6eace1ff585e0cd4968b81ecef04934c08aab5af5273c06b314e9d8314a293b462b5dfd3aaf467d567af024622035a98b49703bcbd473705023
7
+ data.tar.gz: 156b3848c0946853378c04e9aef6f0ecf434d9c5f978441c9a20b3d4311c973b6c5409600aad6d92aba9c74b55c2554c279405602c81023ef900bcd9aca0f8be
@@ -1,10 +1,15 @@
1
1
  # Release History
2
2
 
3
- ### 0.11.1 / 2020-08-24
3
+ ### v0.11.2 / 2020-09-06
4
+
5
+ * FIXED: Don't get confused when running toys from within a toys directory
6
+ * FIXED: Fix a JRuby-specific race condition when capturing exec streams
7
+
8
+ ### v0.11.1 / 2020-08-24
4
9
 
5
10
  * FIXED: The `.lib` directory actually works as advertised.
6
11
 
7
- ### 0.11.0 / 2020-08-21
12
+ ### v0.11.0 / 2020-08-21
8
13
 
9
14
  * ADDED: The toys search path can be truncated using the `truncate_load_path!` directive.
10
15
  * ADDED: The `:clean` template recognizes `:gitignore` as a path indicating all gitignored files.
@@ -16,7 +21,7 @@
16
21
  * FIXED: Fixed a rare Exec capture failure that resulted from a race condition when closing streams.
17
22
  * DOCS: The Toys user guide now covers static bundle loading and `truncate_load_path!`.
18
23
 
19
- ### 0.10.5 / 2020-07-18
24
+ ### v0.10.5 / 2020-07-18
20
25
 
21
26
  * IMPROVED: The bundler mixin silences bundler output during bundle setup.
22
27
  * 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.
@@ -24,24 +29,24 @@
24
29
  * FIXED: Some cases of transitive dependency handling by the bundler mixin.
25
30
  * FIXED: Fixed a crash when computing suggestions, when running with a bundle on Ruby 2.6 or earlier.
26
31
 
27
- ### 0.10.4 / 2020-07-11
32
+ ### v0.10.4 / 2020-07-11
28
33
 
29
34
  * IMPROVED: Bundler integration can now handle Toys itself being in the bundle, as long as the version requirements cover the running Toys version.
30
35
  * IMPROVED: Passing `static: true` to the `:bundler` mixin installs the bundle at definition rather than execution time.
31
36
 
32
- ### 0.10.3 / 2020-07-04
37
+ ### v0.10.3 / 2020-07-04
33
38
 
34
39
  * FIXED: The `exec_separate_tool` method in the `:exec` mixin no longer throws ENOEXEC on Windows.
35
40
 
36
- ### 0.10.2 / 2020-07-03
41
+ ### v0.10.2 / 2020-07-03
37
42
 
38
43
  * FIXED: The load path no longer loses the toys and toys-core directories after a bundle install.
39
44
 
40
- ### 0.10.1 / 2020-03-07
45
+ ### v0.10.1 / 2020-03-07
41
46
 
42
47
  * FIXED: Setting `:exit_on_nonzero_status` explicitly to false now works as expected.
43
48
 
44
- ### 0.10.0 / 2020-02-24
49
+ ### v0.10.0 / 2020-02-24
45
50
 
46
51
  * ADDED: `:bundler` mixin that installs and sets up a bundle for the tool
47
52
  * ADDED: `bundler` options in the standard templates, to run those tools in a bundle
@@ -57,26 +62,26 @@
57
62
  * FIXED: `rdoc` template crashed if any nonstandard options were given.
58
63
  * FIXED: `rubocop` template would abort prematurely if standard streams were redirected.
59
64
 
60
- ### 0.9.4 / 2020-01-26
65
+ ### v0.9.4 / 2020-01-26
61
66
 
62
67
  * FIXED: Crash in the loader when a non-ruby file appears in a toys directory
63
68
 
64
- ### 0.9.3 / 2020-01-05
69
+ ### v0.9.3 / 2020-01-05
65
70
 
66
71
  * FIXED: `delegate_to` directive could crash if an overriding tool has already been defined.
67
72
  * FIXED: A Ruby 2.7 warning when reporting a Toys file syntax error.
68
73
 
69
- ### 0.9.2 / 2020-01-03
74
+ ### v0.9.2 / 2020-01-03
70
75
 
71
76
  * IMPROVED: Mixins can now take real keyword arguments, and will pass them on properly to `on_initialize` and `on_include` blocks.
72
77
  * 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.
73
78
 
74
- ### 0.9.1 / 2019-12-22
79
+ ### v0.9.1 / 2019-12-22
75
80
 
76
81
  * IMPROVED: `delegate_to` and `alias_tool` can take symbols as well as strings.
77
82
  * DOCS: Fixed user guide internal links on rubydoc.info.
78
83
 
79
- ### 0.9.0 / 2019-12-02
84
+ ### v0.9.0 / 2019-12-02
80
85
 
81
86
  * ADDED: The `delegate_to` directive causes the tool to delegate execution to another tool. This means it takes the same arguments and has the same execution behavior.
82
87
  * ADDED: The `delegate_to` argument to the `tool` directive causes the tool to delegate to another tool. (Note: the `alias_tool` directive is now just shorthand for creating a tool with a delegate, and as such is mildly deprecated.)
@@ -87,12 +92,12 @@
87
92
  * IMPROVED: JRuby is now supported for most operations. However, JRuby is generally not recommended because of JVM boot latency, lack of Kernel#fork support, and other issues.
88
93
  * FIXED: The the `tool` directive no longer crashes if not passed a block.
89
94
 
90
- ### 0.8.1 / 2019-11-19
95
+ ### v0.8.1 / 2019-11-19
91
96
 
92
97
  * FIXED: Listing subtools would crash if a broken alias was present.
93
98
  * DOCUMENTATION: Switched from redcarpet to kramdown, and tried to make some structural fixes.
94
99
 
95
- ### 0.8.0 / 2019-06-20
100
+ ### v0.8.0 / 2019-06-20
96
101
 
97
102
  This is a major update with significant new features and a bunch of fixes.
98
103
  It does include a few minor backward-incompatible changes. All signifiant
@@ -146,18 +151,18 @@ Details:
146
151
 
147
152
  Additionally, a significant amount of internal reorganization and cleanup happened in the toys-core gem. See the changelog for toys-core for more details.
148
153
 
149
- ### 0.7.0 / 2019-01-23
154
+ ### v0.7.0 / 2019-01-23
150
155
 
151
156
  * ADDED: A template for creating tools that invoke RSpec.
152
157
  * ADDED: Flag groups, which enforce policies around which flags are required.
153
158
  * CHANGED: Flags within a group are sorted in the help screens.
154
159
  * IMPROVED: The minitest template now honors all standard minitest flags.
155
160
 
156
- ### 0.6.1 / 2019-01-07
161
+ ### v0.6.1 / 2019-01-07
157
162
 
158
163
  * FIXED: The presence of aliases caused subtool listing to crash.
159
164
 
160
- ### 0.6.0 / 2018-10-22
165
+ ### v0.6.0 / 2018-10-22
161
166
 
162
167
  * FIXED: Build tools cd into the context directory when running.
163
168
  * FIXED: Rakefiles are evaluated and tasks are run in the Rakefile's directory.
@@ -169,7 +174,7 @@ Additionally, a significant amount of internal reorganization and cleanup happen
169
174
  * IMPROVED: Non-runnable namespaces are no longer displayed in recursive subtool
170
175
  lists if their children are already displayed.
171
176
 
172
- ### 0.5.0 / 2018-10-07
177
+ ### v0.5.0 / 2018-10-07
173
178
 
174
179
  * ADDED: Period and colon are recognized as tool path delimiters.
175
180
  * ADDED: New rake template that supports loading rake tasks as tools.
@@ -180,31 +185,31 @@ Additionally, a significant amount of internal reorganization and cleanup happen
180
185
  * IMPROVED: The tool directive can now take an `if_defined` argument.
181
186
  * FIXED: Template instantiation was failing if the hosting tool was priority-masked.
182
187
 
183
- ### 0.4.5 / 2018-08-05
188
+ ### v0.4.5 / 2018-08-05
184
189
 
185
190
  * CHANGED: Dropped preload file feature
186
191
 
187
- ### 0.4.4 / 2018-07-21
192
+ ### v0.4.4 / 2018-07-21
188
193
 
189
194
  * FIXED: Utils::Exec wasn't closing streams after copying.
190
195
  * IMPROVED: Utils::Exec::Controller can capture or redirect the remainder of a controlled stream.
191
196
  * ADDED: Terminal#ask
192
197
 
193
- ### 0.4.3 / 2018-07-13
198
+ ### v0.4.3 / 2018-07-13
194
199
 
195
200
  * IMPROVED: Exec mixin methods can now spawn subprocesses in the background
196
201
  * IMPROVED: Exec mixin capture methods can now yield a controller
197
202
 
198
- ### 0.4.2 / 2018-07-08
203
+ ### v0.4.2 / 2018-07-08
199
204
 
200
205
  * FIXED: Raise an error rather than cause unexpected behavior if a mixin is included twice.
201
206
  * IMPROVED: The `include?` method extended to support mixin names in a tool dsl.
202
207
 
203
- ### 0.4.1 / 2018-07-03
208
+ ### v0.4.1 / 2018-07-03
204
209
 
205
210
  * FIXED: Terminal#confirm uppercased "N" for the wrong default.
206
211
 
207
- ### 0.4.0 / 2018-07-03
212
+ ### v0.4.0 / 2018-07-03
208
213
 
209
214
  Now declaring this alpha quality. Backward-incompatible changes are still
210
215
  possible from this point, but I'll try to avoid them.
@@ -214,24 +219,24 @@ possible from this point, but I'll try to avoid them.
214
219
  * IMPROVED: Toys::Utils::Gems can suppress the confirmation prompt
215
220
  * IMPROVED: Magic comments are now honored in toys files.
216
221
 
217
- ### 0.3.11 / 2018-07-02
222
+ ### v0.3.11 / 2018-07-02
218
223
 
219
224
  * CHANGED: Require Ruby 2.3 or later
220
225
  * CHANGED: Renamed "set" directive to "static" to reduce confusion with Tool#set.
221
226
  * ADDED: Convenience methods for getting option values
222
227
 
223
- ### 0.3.10 / 2018-06-30
228
+ ### v0.3.10 / 2018-06-30
224
229
 
225
230
  * CHANGED: Dropped Tool#option. Use Tool#get instead.
226
231
  * CHANGED: "run" directive renamed to "to_run"
227
232
  * CHANGED: Highline mixin now uses Highline 2.0
228
233
  * ADDED: Mixins can provide initializers
229
234
 
230
- ### 0.3.9.1 / 2018-06-24
235
+ ### v0.3.9.1 / 2018-06-24
231
236
 
232
237
  * FIXED: Built-in flags were interfering with disable_argument_parsing
233
238
 
234
- ### 0.3.9 / 2018-06-24
239
+ ### v0.3.9 / 2018-06-24
235
240
 
236
241
  * CHANGED: Removed alias_as directive since it's incompatible with selective loading.
237
242
  * ADDED: Ability to define named templates in Toys files
@@ -241,18 +246,18 @@ possible from this point, but I'll try to avoid them.
241
246
  * IMPROVED: Acceptors can be looked up recursively in the same way as mixins and templates
242
247
  * FIXED: Templates were not activating needed gems
243
248
 
244
- ### 0.3.8 / 2018-06-10
249
+ ### v0.3.8 / 2018-06-10
245
250
 
246
251
  * CHANGED: Renamed helpers to mixins.
247
252
  * CHANGED: Renamed :in_from, :out_to, and :err_to exec options to :in, :out, :err
248
253
  * IMPROVED: Exec raises an error if passed an unknown option.
249
254
  * IMPROVED: Exec now accepts nearly all the same stream specifications as Process#spawn.
250
255
 
251
- ### 0.3.7.1 / 2018-05-30
256
+ ### v0.3.7.1 / 2018-05-30
252
257
 
253
258
  * FIXED: Fix crash in system update.
254
259
 
255
- ### 0.3.7 / 2018-05-30
260
+ ### v0.3.7 / 2018-05-30
256
261
 
257
262
  * CHANGED: Execution runs in the same scope as the DSL, which lets us use normal methods instead of helper-blocks.
258
263
  * CHANGED: Renamed "script" to "run", and allow setting of runnable by defining a "run" method
@@ -261,7 +266,7 @@ possible from this point, but I'll try to avoid them.
261
266
  * CHANGED: Removed spinner helper and added terminal helper.
262
267
  * ADDED: Helper modules scoped to the tool hierarchy
263
268
 
264
- ### 0.3.6 / 2018-05-21
269
+ ### v0.3.6 / 2018-05-21
265
270
 
266
271
  * CHANGED: Removed Context#new_cli and exposed Context#cli instead.
267
272
  * CHANGED: Raises ToolDefinitionError if you declare a duplicate flag.
@@ -270,13 +275,13 @@ possible from this point, but I'll try to avoid them.
270
275
  * IMPROVED: Support custom acceptors.
271
276
  * IMPROVED: Highline helper automatically sets use_color based on the type of stdout.
272
277
 
273
- ### 0.3.5 / 2018-05-15
278
+ ### v0.3.5 / 2018-05-15
274
279
 
275
280
  * CHANGED: Flag and arg blocks in the DSL have an interface more similar to the rest of the DSL.
276
281
  * CHANGED: Renamed `execute do` to `script do`.
277
282
  * IMPROVED: Help display uses `less` if available.
278
283
 
279
- ### 0.3.4 / 2018-05-14
284
+ ### v0.3.4 / 2018-05-14
280
285
 
281
286
  * CHANGED: Renamed switch to flag
282
287
  * CHANGED: Renamed docs: parameter again, to desc: and long_desc: to match tool desc.
@@ -293,7 +298,7 @@ possible from this point, but I'll try to avoid them.
293
298
  * FIXED: Subtools with no desc now properly pick up the default
294
299
  * FIXED: Usage errors and show-help now interact in the right way
295
300
 
296
- ### 0.3.3 / 2018-05-09
301
+ ### v0.3.3 / 2018-05-09
297
302
 
298
303
  * CHANGED: Renamed file_utils helper to fileutils.
299
304
  * CHANGED: Renamed doc: parameter to docs:
@@ -303,7 +308,7 @@ possible from this point, but I'll try to avoid them.
303
308
  * ADDED: WrappableString for descriptions and docs
304
309
  * IMPROVED: Descriptions can have multiple lines
305
310
 
306
- ### 0.3.2 / 2018-05-07
311
+ ### v0.3.2 / 2018-05-07
307
312
 
308
313
  * CHANGED: Split core engine out into separate "toys-core" gem. See the
309
314
  toys-core changelog for additional changes in core.
@@ -314,7 +319,7 @@ possible from this point, but I'll try to avoid them.
314
319
  * IMPROVED: Help shows the config file path on "--verbose".
315
320
  * IMPROVED: You can now run a sub-instance of toys from an executor.
316
321
 
317
- ### 0.3.1 / 2018-05-02
322
+ ### v0.3.1 / 2018-05-02
318
323
 
319
324
  * CHANGED: Subcommand display is now recursive by default.
320
325
  * IMPROVED: Improved error messaging for bad switch syntax.
@@ -323,6 +328,6 @@ possible from this point, but I'll try to avoid them.
323
328
  * DOCS: Completed a first pass on class and method documentation.
324
329
  * INTERNAL: Adjusted naming of switch-related methods.
325
330
 
326
- ### 0.3.0 / 2018-04-30
331
+ ### v0.3.0 / 2018-04-30
327
332
 
328
333
  * Initial generally usable release
@@ -110,7 +110,7 @@ module Toys
110
110
  middleware_stack: default_middleware_stack,
111
111
  template_lookup: default_template_lookup
112
112
  )
113
- add_standard_paths(cur_dir: cur_dir)
113
+ add_standard_paths(cur_dir: cur_dir, toys_dir_name: CONFIG_DIR_NAME)
114
114
  end
115
115
 
116
116
  private
@@ -132,8 +132,9 @@ module Toys
132
132
  # directories, or `nil` to use the defaults.
133
133
  # @return [self]
134
134
  #
135
- def add_standard_paths(cur_dir: nil, global_dirs: nil)
135
+ def add_standard_paths(cur_dir: nil, global_dirs: nil, toys_dir_name: nil)
136
136
  cur_dir ||= ::Dir.pwd
137
+ cur_dir = skip_toys_dir(cur_dir, toys_dir_name) if toys_dir_name
137
138
  global_dirs ||= default_global_dirs
138
139
  add_search_path_hierarchy(start: cur_dir, terminate: global_dirs)
139
140
  global_dirs.each { |path| add_search_path(path) }
@@ -142,6 +143,20 @@ module Toys
142
143
  self
143
144
  end
144
145
 
146
+ # Step out of any toys dir
147
+ def skip_toys_dir(dir, toys_dir_name)
148
+ cur_dir = dir
149
+ loop do
150
+ parent = ::File.dirname(dir)
151
+ return cur_dir if parent == dir
152
+ if ::File.basename(dir) == toys_dir_name
153
+ cur_dir = dir = parent
154
+ else
155
+ dir = parent
156
+ end
157
+ end
158
+ end
159
+
145
160
  # rubocop:disable Metrics/MethodLength
146
161
 
147
162
  ##
@@ -5,5 +5,5 @@ module Toys
5
5
  # Current version of the Toys command line executable.
6
6
  # @return [String]
7
7
  #
8
- VERSION = "0.11.1"
8
+ VERSION = "0.11.2"
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toys
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.1
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-08-24 00:00:00.000000000 Z
11
+ date: 2020-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: toys-core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.11.1
19
+ version: 0.11.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.11.1
26
+ version: 0.11.2
27
27
  description: Toys is a configurable command line tool. Write commands in Ruby using
28
28
  a simple DSL, and Toys will provide the command line executable and take care of
29
29
  all the details such as argument parsing, online help, and error reporting. Toys
@@ -63,10 +63,10 @@ homepage: https://github.com/dazuma/toys
63
63
  licenses:
64
64
  - MIT
65
65
  metadata:
66
- changelog_uri: https://dazuma.github.io/toys/gems/toys/v0.11.1/file.CHANGELOG.html
66
+ changelog_uri: https://dazuma.github.io/toys/gems/toys/v0.11.2/file.CHANGELOG.html
67
67
  source_code_uri: https://github.com/dazuma/toys
68
68
  bug_tracker_uri: https://github.com/dazuma/toys/issues
69
- documentation_uri: https://dazuma.github.io/toys/gems/toys/v0.11.1
69
+ documentation_uri: https://dazuma.github.io/toys/gems/toys/v0.11.2
70
70
  post_install_message:
71
71
  rdoc_options: []
72
72
  require_paths: