toys-core 0.11.5 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/README.md +1 -1
- data/lib/toys-core.rb +4 -1
- data/lib/toys/acceptor.rb +3 -3
- data/lib/toys/arg_parser.rb +6 -7
- data/lib/toys/cli.rb +44 -14
- data/lib/toys/compat.rb +19 -22
- data/lib/toys/completion.rb +3 -1
- data/lib/toys/context.rb +2 -2
- data/lib/toys/core.rb +1 -1
- data/lib/toys/dsl/base.rb +85 -0
- data/lib/toys/dsl/flag.rb +3 -3
- data/lib/toys/dsl/flag_group.rb +7 -7
- data/lib/toys/dsl/internal.rb +206 -0
- data/lib/toys/dsl/positional_arg.rb +3 -3
- data/lib/toys/dsl/tool.rb +174 -216
- data/lib/toys/errors.rb +1 -0
- data/lib/toys/flag.rb +15 -18
- data/lib/toys/flag_group.rb +5 -4
- data/lib/toys/input_file.rb +4 -4
- data/lib/toys/loader.rb +189 -50
- data/lib/toys/middleware.rb +1 -1
- data/lib/toys/mixin.rb +2 -2
- data/lib/toys/positional_arg.rb +3 -3
- data/lib/toys/settings.rb +900 -0
- data/lib/toys/source_info.rb +121 -18
- data/lib/toys/standard_middleware/apply_config.rb +5 -4
- data/lib/toys/standard_middleware/set_default_descriptions.rb +18 -18
- data/lib/toys/standard_middleware/show_help.rb +17 -5
- data/lib/toys/standard_mixins/exec.rb +12 -14
- data/lib/toys/standard_mixins/git_cache.rb +48 -0
- data/lib/toys/standard_mixins/xdg.rb +56 -0
- data/lib/toys/template.rb +2 -2
- data/lib/toys/{tool.rb → tool_definition.rb} +100 -41
- data/lib/toys/utils/exec.rb +4 -5
- data/lib/toys/utils/gems.rb +8 -7
- data/lib/toys/utils/git_cache.rb +184 -0
- data/lib/toys/utils/help_text.rb +90 -34
- data/lib/toys/utils/terminal.rb +1 -1
- data/lib/toys/utils/xdg.rb +293 -0
- metadata +14 -7
data/lib/toys/source_info.rb
CHANGED
@@ -2,21 +2,27 @@
|
|
2
2
|
|
3
3
|
module Toys
|
4
4
|
##
|
5
|
-
# Information about source
|
5
|
+
# Information about the source of a tool, such as the file, git repository,
|
6
|
+
# or block that defined it.
|
6
7
|
#
|
7
8
|
class SourceInfo
|
8
9
|
##
|
9
10
|
# Create a SourceInfo.
|
10
11
|
# @private
|
11
12
|
#
|
12
|
-
def initialize(parent, context_directory, source_type, source_path, source_proc,
|
13
|
-
source_name, data_dir_name, lib_dir_name)
|
13
|
+
def initialize(parent, priority, context_directory, source_type, source_path, source_proc,
|
14
|
+
git_remote, git_path, git_commit, source_name, data_dir_name, lib_dir_name)
|
14
15
|
@parent = parent
|
16
|
+
@root = parent&.root || self
|
17
|
+
@priority = priority
|
15
18
|
@context_directory = context_directory
|
16
19
|
@source_type = source_type
|
17
20
|
@source = source_type == :proc ? source_proc : source_path
|
18
21
|
@source_path = source_path
|
19
22
|
@source_proc = source_proc
|
23
|
+
@git_remote = git_remote
|
24
|
+
@git_path = git_path
|
25
|
+
@git_commit = git_commit
|
20
26
|
@source_name = source_name
|
21
27
|
@data_dir_name = data_dir_name
|
22
28
|
@lib_dir_name = lib_dir_name
|
@@ -32,6 +38,21 @@ module Toys
|
|
32
38
|
#
|
33
39
|
attr_reader :parent
|
34
40
|
|
41
|
+
##
|
42
|
+
# The root ancestor of this SourceInfo.
|
43
|
+
#
|
44
|
+
# @return [Toys::SourceInfo] The root ancestor.
|
45
|
+
#
|
46
|
+
attr_reader :root
|
47
|
+
|
48
|
+
##
|
49
|
+
# The priority of tools defined by this source. Higher values indicate a
|
50
|
+
# higher priority. Lower priority values could be negative.
|
51
|
+
#
|
52
|
+
# @return [Integer] The priority.
|
53
|
+
#
|
54
|
+
attr_reader :priority
|
55
|
+
|
35
56
|
##
|
36
57
|
# The context directory path (normally the directory containing the
|
37
58
|
# toplevel toys file or directory).
|
@@ -73,6 +94,30 @@ module Toys
|
|
73
94
|
#
|
74
95
|
attr_reader :source_proc
|
75
96
|
|
97
|
+
##
|
98
|
+
# The git remote.
|
99
|
+
#
|
100
|
+
# @return [String] The git remote
|
101
|
+
# @return [nil] if this source is not fron git.
|
102
|
+
#
|
103
|
+
attr_reader :git_remote
|
104
|
+
|
105
|
+
##
|
106
|
+
# The git path.
|
107
|
+
#
|
108
|
+
# @return [String] The git path. This could be the empty string.
|
109
|
+
# @return [nil] if this source is not fron git.
|
110
|
+
#
|
111
|
+
attr_reader :git_path
|
112
|
+
|
113
|
+
##
|
114
|
+
# The git commit.
|
115
|
+
#
|
116
|
+
# @return [String] The git commit.
|
117
|
+
# @return [nil] if this source is not fron git.
|
118
|
+
#
|
119
|
+
attr_reader :git_commit
|
120
|
+
|
76
121
|
##
|
77
122
|
# The user-visible name of this source.
|
78
123
|
#
|
@@ -120,51 +165,109 @@ module Toys
|
|
120
165
|
# Create a child SourceInfo relative to the parent path.
|
121
166
|
# @private
|
122
167
|
#
|
123
|
-
def relative_child(filename)
|
124
|
-
|
168
|
+
def relative_child(filename, source_name: nil)
|
169
|
+
unless source_type == :directory
|
170
|
+
raise LoaderError, "relative_child is valid only on a directory source"
|
171
|
+
end
|
125
172
|
child_path = ::File.join(source_path, filename)
|
126
173
|
child_path, type = SourceInfo.check_path(child_path, true)
|
127
174
|
return nil unless child_path
|
128
|
-
|
129
|
-
|
175
|
+
child_git_path = ::File.join(git_path, filename) if git_path
|
176
|
+
source_name ||=
|
177
|
+
if git_path
|
178
|
+
"git(remote=#{git_remote} path=#{child_git_path} commit=#{git_commit})"
|
179
|
+
else
|
180
|
+
child_path
|
181
|
+
end
|
182
|
+
SourceInfo.new(self, priority, context_directory, type, child_path, nil,
|
183
|
+
git_remote, child_git_path, git_commit,
|
184
|
+
source_name, @data_dir_name, @lib_dir_name)
|
130
185
|
end
|
131
186
|
|
132
187
|
##
|
133
188
|
# Create a child SourceInfo with an absolute path.
|
134
189
|
# @private
|
135
190
|
#
|
136
|
-
def absolute_child(child_path)
|
191
|
+
def absolute_child(child_path, source_name: nil)
|
192
|
+
child_path, type = SourceInfo.check_path(child_path, false)
|
193
|
+
source_name ||= child_path
|
194
|
+
SourceInfo.new(self, priority, context_directory, type, child_path, nil, nil, nil, nil,
|
195
|
+
source_name, @data_dir_name, @lib_dir_name)
|
196
|
+
end
|
197
|
+
|
198
|
+
##
|
199
|
+
# Create a child SourceInfo with a git source.
|
200
|
+
# @private
|
201
|
+
#
|
202
|
+
def git_child(child_git_remote, child_git_path, child_git_commit, child_path,
|
203
|
+
source_name: nil)
|
137
204
|
child_path, type = SourceInfo.check_path(child_path, false)
|
138
|
-
|
139
|
-
|
205
|
+
source_name ||=
|
206
|
+
"git(remote=#{child_git_remote} path=#{child_git_path} commit=#{child_git_commit})"
|
207
|
+
SourceInfo.new(self, priority, context_directory, type, child_path, nil,
|
208
|
+
child_git_remote, child_git_path, child_git_commit,
|
209
|
+
source_name, @data_dir_name, @lib_dir_name)
|
140
210
|
end
|
141
211
|
|
142
212
|
##
|
143
213
|
# Create a proc child SourceInfo
|
144
214
|
# @private
|
145
215
|
#
|
146
|
-
def proc_child(child_proc, source_name
|
216
|
+
def proc_child(child_proc, source_name: nil)
|
147
217
|
source_name ||= self.source_name
|
148
|
-
SourceInfo.new(self, context_directory, :proc, source_path, child_proc,
|
149
|
-
|
218
|
+
SourceInfo.new(self, priority, context_directory, :proc, source_path, child_proc,
|
219
|
+
git_remote, git_path, git_commit,
|
220
|
+
source_name, @data_dir_name, @lib_dir_name)
|
150
221
|
end
|
151
222
|
|
152
223
|
##
|
153
224
|
# Create a root source info for a file path.
|
154
225
|
# @private
|
155
226
|
#
|
156
|
-
def self.create_path_root(source_path,
|
227
|
+
def self.create_path_root(source_path, priority,
|
228
|
+
context_directory: nil,
|
229
|
+
data_dir_name: nil,
|
230
|
+
lib_dir_name: nil,
|
231
|
+
source_name: nil)
|
232
|
+
source_path, type = check_path(source_path, false)
|
233
|
+
case context_directory
|
234
|
+
when :parent
|
235
|
+
context_directory = ::File.dirname(source_path)
|
236
|
+
when :path
|
237
|
+
context_directory = source_path
|
238
|
+
end
|
239
|
+
source_name ||= source_path
|
240
|
+
new(nil, priority, context_directory, type, source_path, nil, nil, nil, nil,
|
241
|
+
source_name, data_dir_name, lib_dir_name)
|
242
|
+
end
|
243
|
+
|
244
|
+
##
|
245
|
+
# Create a root source info for a cached git repo.
|
246
|
+
# @private
|
247
|
+
#
|
248
|
+
def self.create_git_root(git_remote, git_path, git_commit, source_path, priority,
|
249
|
+
context_directory: nil,
|
250
|
+
data_dir_name: nil,
|
251
|
+
lib_dir_name: nil,
|
252
|
+
source_name: nil)
|
157
253
|
source_path, type = check_path(source_path, false)
|
158
|
-
|
159
|
-
new(nil, context_directory, type, source_path, nil,
|
254
|
+
source_name ||= "git(remote=#{git_remote} path=#{git_path} commit=#{git_commit})"
|
255
|
+
new(nil, priority, context_directory, type, source_path, nil, git_remote,
|
256
|
+
git_path, git_commit, source_name, data_dir_name, lib_dir_name)
|
160
257
|
end
|
161
258
|
|
162
259
|
##
|
163
260
|
# Create a root source info for a proc.
|
164
261
|
# @private
|
165
262
|
#
|
166
|
-
def self.create_proc_root(source_proc,
|
167
|
-
|
263
|
+
def self.create_proc_root(source_proc, priority,
|
264
|
+
context_directory: nil,
|
265
|
+
data_dir_name: nil,
|
266
|
+
lib_dir_name: nil,
|
267
|
+
source_name: nil)
|
268
|
+
source_name ||= "(code block #{source_proc.object_id})"
|
269
|
+
new(nil, priority, context_directory, :proc, nil, source_proc, nil, nil,
|
270
|
+
nil, source_name, data_dir_name, lib_dir_name)
|
168
271
|
end
|
169
272
|
|
170
273
|
##
|
@@ -19,9 +19,9 @@ module Toys
|
|
19
19
|
def initialize(parent_source: nil, source_name: nil, &block)
|
20
20
|
@source_info =
|
21
21
|
if parent_source
|
22
|
-
parent_source.proc_child(block, source_name)
|
22
|
+
parent_source.proc_child(block, source_name: source_name)
|
23
23
|
else
|
24
|
-
SourceInfo.create_proc_root(block, source_name)
|
24
|
+
SourceInfo.create_proc_root(block, source_name: source_name)
|
25
25
|
end
|
26
26
|
@block = block
|
27
27
|
end
|
@@ -30,9 +30,10 @@ module Toys
|
|
30
30
|
# Appends the configuration block.
|
31
31
|
# @private
|
32
32
|
#
|
33
|
-
def config(tool,
|
33
|
+
def config(tool, loader)
|
34
34
|
tool_class = tool.tool_class
|
35
|
-
DSL::
|
35
|
+
DSL::Internal.prepare(tool_class, tool.full_name, tool.priority, nil, @source_info,
|
36
|
+
loader) do
|
36
37
|
tool_class.class_eval(&@block)
|
37
38
|
end
|
38
39
|
yield
|
@@ -115,12 +115,12 @@ module Toys
|
|
115
115
|
# By default, it uses the parameters given to the middleware object.
|
116
116
|
# Override this method to provide different logic.
|
117
117
|
#
|
118
|
-
# @param tool [Toys::
|
118
|
+
# @param tool [Toys::ToolDefinition] The tool to document.
|
119
119
|
# @param data [Hash] Additional data that might be useful. Currently,
|
120
120
|
# the {Toys::Loader} is passed with key `:loader`. Future versions
|
121
121
|
# of Toys may provide additional information.
|
122
122
|
# @return [String,Array<String>,Toys::WrappableString] The default
|
123
|
-
# description. See {Toys::Tool#desc
|
123
|
+
# description. See {Toys::DSL::Tool#desc} for info on the format.
|
124
124
|
# @return [nil] if this middleware should not set the description.
|
125
125
|
#
|
126
126
|
def generate_tool_desc(tool, data)
|
@@ -141,12 +141,12 @@ module Toys
|
|
141
141
|
# By default, it uses the parameters given to the middleware object.
|
142
142
|
# Override this method to provide different logic.
|
143
143
|
#
|
144
|
-
# @param tool [Toys::
|
144
|
+
# @param tool [Toys::ToolDefinition] The tool to document
|
145
145
|
# @param data [Hash] Additional data that might be useful. Currently,
|
146
146
|
# the {Toys::Loader} is passed with key `:loader`. Future versions of
|
147
147
|
# Toys may provide additional information.
|
148
148
|
# @return [Array<Toys::WrappableString,String,Array<String>>] The default
|
149
|
-
# long description. See {Toys::Tool#long_desc
|
149
|
+
# long description. See {Toys::DSL::Tool#long_desc} for info on the
|
150
150
|
# format.
|
151
151
|
# @return [nil] if this middleware should not set the long description.
|
152
152
|
#
|
@@ -166,10 +166,10 @@ module Toys
|
|
166
166
|
#
|
167
167
|
# @param flag [Toys::Flag] The flag to document
|
168
168
|
# @param data [Hash] Additional data that might be useful. Currently,
|
169
|
-
# the {Toys::
|
169
|
+
# the {Toys::ToolDefinition} is passed with key `:tool`. Future
|
170
170
|
# versions of Toys may provide additional information.
|
171
171
|
# @return [String,Array<String>,Toys::WrappableString] The default
|
172
|
-
# description. See {Toys::Tool#desc
|
172
|
+
# description. See {Toys::DSL::Tool#desc} for info on the format.
|
173
173
|
# @return [nil] if this middleware should not set the description.
|
174
174
|
#
|
175
175
|
def generate_flag_desc(flag, data) # rubocop:disable Lint/UnusedMethodArgument
|
@@ -185,10 +185,10 @@ module Toys
|
|
185
185
|
#
|
186
186
|
# @param flag [Toys::Flag] The flag to document
|
187
187
|
# @param data [Hash] Additional data that might be useful. Currently,
|
188
|
-
# the {Toys::
|
188
|
+
# the {Toys::ToolDefinition} is passed with key `:tool`. Future
|
189
189
|
# versions of Toys may provide additional information.
|
190
190
|
# @return [Array<Toys::WrappableString,String,Array<String>>] The default
|
191
|
-
# long description. See {Toys::Tool#long_desc
|
191
|
+
# long description. See {Toys::DSL::Tool#long_desc} for info on the
|
192
192
|
# format.
|
193
193
|
# @return [nil] if this middleware should not set the long description.
|
194
194
|
#
|
@@ -202,10 +202,10 @@ module Toys
|
|
202
202
|
#
|
203
203
|
# @param arg [Toys::PositionalArg] The arg to document
|
204
204
|
# @param data [Hash] Additional data that might be useful. Currently,
|
205
|
-
# the {Toys::
|
206
|
-
# Toys may provide additional information.
|
205
|
+
# the {Toys::ToolDefinition} is passed with key `:tool`. Future
|
206
|
+
# versions of Toys may provide additional information.
|
207
207
|
# @return [String,Array<String>,Toys::WrappableString] The default
|
208
|
-
# description. See {Toys::Tool#desc
|
208
|
+
# description. See {Toys::DSL::Tool#desc} for info on the format.
|
209
209
|
# @return [nil] if this middleware should not set the description.
|
210
210
|
#
|
211
211
|
def generate_arg_desc(arg, data) # rubocop:disable Lint/UnusedMethodArgument
|
@@ -227,10 +227,10 @@ module Toys
|
|
227
227
|
#
|
228
228
|
# @param arg [Toys::PositionalArg] The arg to document
|
229
229
|
# @param data [Hash] Additional data that might be useful. Currently,
|
230
|
-
# the {Toys::
|
231
|
-
# Toys may provide additional information.
|
230
|
+
# the {Toys::ToolDefinition} is passed with key `:tool`. Future
|
231
|
+
# versions of Toys may provide additional information.
|
232
232
|
# @return [Array<Toys::WrappableString,String,Array<String>>] The default
|
233
|
-
# long description. See {Toys::Tool#long_desc
|
233
|
+
# long description. See {Toys::DSL::Tool#long_desc} for info on the
|
234
234
|
# format.
|
235
235
|
# @return [nil] if this middleware should not set the long description.
|
236
236
|
#
|
@@ -244,10 +244,10 @@ module Toys
|
|
244
244
|
#
|
245
245
|
# @param group [Toys::FlagGroup] The flag group to document
|
246
246
|
# @param data [Hash] Additional data that might be useful. Currently,
|
247
|
-
# the {Toys::
|
247
|
+
# the {Toys::ToolDefinition} is passed with key `:tool`. Future
|
248
248
|
# versions of Toys may provide additional information.
|
249
249
|
# @return [String,Array<String>,Toys::WrappableString] The default
|
250
|
-
# description. See {Toys::Tool#desc
|
250
|
+
# description. See {Toys::DSL::Tool#desc} for info on the format.
|
251
251
|
# @return [nil] if this middleware should not set the description.
|
252
252
|
#
|
253
253
|
def generate_flag_group_desc(group, data) # rubocop:disable Lint/UnusedMethodArgument
|
@@ -264,10 +264,10 @@ module Toys
|
|
264
264
|
#
|
265
265
|
# @param group [Toys::FlagGroup] The flag group to document
|
266
266
|
# @param data [Hash] Additional data that might be useful. Currently,
|
267
|
-
# the {Toys::
|
267
|
+
# the {Toys::ToolDefinition} is passed with key `:tool`. Future
|
268
268
|
# versions of Toys may provide additional information.
|
269
269
|
# @return [Array<Toys::WrappableString,String,Array<String>>] The default
|
270
|
-
# long description. See {Toys::Tool#long_desc
|
270
|
+
# long description. See {Toys::DSL::Tool#long_desc} for info on the
|
271
271
|
# format.
|
272
272
|
# @return [nil] if this middleware should not set the long description.
|
273
273
|
#
|
@@ -159,6 +159,8 @@ module Toys
|
|
159
159
|
# that tool.
|
160
160
|
# @param show_source_path [Boolean] Show the source path section. Default
|
161
161
|
# is `false`.
|
162
|
+
# @param separate_sources [Boolean] Split up tool list by source root.
|
163
|
+
# Defaults to false.
|
162
164
|
# @param use_less [Boolean] If the `less` tool is available, and the
|
163
165
|
# output stream is a tty, then use `less` to display help text.
|
164
166
|
# @param stream [IO] Output stream to write to. Default is stdout.
|
@@ -177,6 +179,7 @@ module Toys
|
|
177
179
|
fallback_execution: false,
|
178
180
|
allow_root_args: false,
|
179
181
|
show_source_path: false,
|
182
|
+
separate_sources: false,
|
180
183
|
use_less: false,
|
181
184
|
stream: $stdout,
|
182
185
|
styled_output: nil)
|
@@ -191,6 +194,7 @@ module Toys
|
|
191
194
|
@fallback_execution = fallback_execution
|
192
195
|
@allow_root_args = allow_root_args
|
193
196
|
@show_source_path = show_source_path
|
197
|
+
@separate_sources = separate_sources
|
194
198
|
@stream = stream
|
195
199
|
@styled_output = styled_output
|
196
200
|
@use_less = use_less && !Compat.jruby?
|
@@ -250,7 +254,9 @@ module Toys
|
|
250
254
|
help_text = get_help_text(context, true)
|
251
255
|
str = help_text.usage_string(
|
252
256
|
recursive: context[RECURSIVE_SUBTOOLS_KEY],
|
253
|
-
include_hidden: context[SHOW_ALL_SUBTOOLS_KEY],
|
257
|
+
include_hidden: context[SHOW_ALL_SUBTOOLS_KEY],
|
258
|
+
separate_sources: @separate_sources,
|
259
|
+
wrap_width: terminal.width
|
254
260
|
)
|
255
261
|
terminal.puts(str)
|
256
262
|
end
|
@@ -258,8 +264,11 @@ module Toys
|
|
258
264
|
def show_list(context)
|
259
265
|
help_text = get_help_text(context, true)
|
260
266
|
str = help_text.list_string(
|
261
|
-
recursive: context[RECURSIVE_SUBTOOLS_KEY],
|
262
|
-
|
267
|
+
recursive: context[RECURSIVE_SUBTOOLS_KEY],
|
268
|
+
search: context[SEARCH_STRING_KEY],
|
269
|
+
include_hidden: context[SHOW_ALL_SUBTOOLS_KEY],
|
270
|
+
separate_sources: @separate_sources,
|
271
|
+
wrap_width: terminal.width
|
263
272
|
)
|
264
273
|
terminal.puts(str)
|
265
274
|
end
|
@@ -267,8 +276,11 @@ module Toys
|
|
267
276
|
def show_help(context, use_extra_args)
|
268
277
|
help_text = get_help_text(context, use_extra_args)
|
269
278
|
str = help_text.help_string(
|
270
|
-
recursive: context[RECURSIVE_SUBTOOLS_KEY],
|
271
|
-
|
279
|
+
recursive: context[RECURSIVE_SUBTOOLS_KEY],
|
280
|
+
search: context[SEARCH_STRING_KEY],
|
281
|
+
include_hidden: context[SHOW_ALL_SUBTOOLS_KEY],
|
282
|
+
show_source_path: @show_source_path,
|
283
|
+
separate_sources: @separate_sources,
|
272
284
|
wrap_width: terminal.width
|
273
285
|
)
|
274
286
|
if less_path
|
@@ -16,8 +16,6 @@ module Toys
|
|
16
16
|
# This is a frontend for {Toys::Utils::Exec}. More information is
|
17
17
|
# available in that class's documentation.
|
18
18
|
#
|
19
|
-
# ## Features
|
20
|
-
#
|
21
19
|
# ### Controlling processes
|
22
20
|
#
|
23
21
|
# A process can be started in the *foreground* or the *background*. If you
|
@@ -149,7 +147,7 @@ module Toys
|
|
149
147
|
#
|
150
148
|
# include :exec, exit_on_nonzero_status: true
|
151
149
|
#
|
152
|
-
#
|
150
|
+
# ### Configuration Options
|
153
151
|
#
|
154
152
|
# A variety of options can be used to control subprocesses. These can be
|
155
153
|
# provided to any method that starts a subprocess. You can also set
|
@@ -267,7 +265,7 @@ module Toys
|
|
267
265
|
# If the process is not set to run in the background, and a block is
|
268
266
|
# provided, a {Toys::Utils::Exec::Controller} will be yielded to it.
|
269
267
|
#
|
270
|
-
#
|
268
|
+
# ### Examples
|
271
269
|
#
|
272
270
|
# Run a command without a shell, and print the exit code (0 for success):
|
273
271
|
#
|
@@ -303,7 +301,7 @@ module Toys
|
|
303
301
|
# If the process is not set to run in the background, and a block is
|
304
302
|
# provided, a {Toys::Utils::Exec::Controller} will be yielded to it.
|
305
303
|
#
|
306
|
-
#
|
304
|
+
# ### Example
|
307
305
|
#
|
308
306
|
# Execute a small script with warnings
|
309
307
|
#
|
@@ -337,7 +335,7 @@ module Toys
|
|
337
335
|
# Beware that some Ruby environments (e.g. JRuby, and Ruby on Windows)
|
338
336
|
# do not support this method because they do not support fork.
|
339
337
|
#
|
340
|
-
#
|
338
|
+
# ### Example
|
341
339
|
#
|
342
340
|
# Run a proc in a forked process.
|
343
341
|
#
|
@@ -377,7 +375,7 @@ module Toys
|
|
377
375
|
# Beware that some Ruby environments (e.g. JRuby, and Ruby on Windows)
|
378
376
|
# do not support this method because they do not support fork.
|
379
377
|
#
|
380
|
-
#
|
378
|
+
# ### Example
|
381
379
|
#
|
382
380
|
# Run the "system update" tool and pass it an argument.
|
383
381
|
#
|
@@ -424,7 +422,7 @@ module Toys
|
|
424
422
|
# run a tool that uses a different bundle. It may also be necessary on
|
425
423
|
# environments without "fork" (such as JRuby or Ruby on Windows).
|
426
424
|
#
|
427
|
-
#
|
425
|
+
# ### Example
|
428
426
|
#
|
429
427
|
# Run the "system update" tool and pass it an argument.
|
430
428
|
#
|
@@ -459,7 +457,7 @@ module Toys
|
|
459
457
|
# If a block is provided, a {Toys::Utils::Exec::Controller} will be
|
460
458
|
# yielded to it.
|
461
459
|
#
|
462
|
-
#
|
460
|
+
# ### Example
|
463
461
|
#
|
464
462
|
# Capture the output of an echo command
|
465
463
|
#
|
@@ -490,7 +488,7 @@ module Toys
|
|
490
488
|
# If a block is provided, a {Toys::Utils::Exec::Controller} will be
|
491
489
|
# yielded to it.
|
492
490
|
#
|
493
|
-
#
|
491
|
+
# ### Example
|
494
492
|
#
|
495
493
|
# Capture the output of a ruby script.
|
496
494
|
#
|
@@ -524,7 +522,7 @@ module Toys
|
|
524
522
|
# Beware that some Ruby environments (e.g. JRuby, and Ruby on Windows)
|
525
523
|
# do not support this method because they do not support fork.
|
526
524
|
#
|
527
|
-
#
|
525
|
+
# ### Example
|
528
526
|
#
|
529
527
|
# Run a proc in a forked process and capture its output:
|
530
528
|
#
|
@@ -564,7 +562,7 @@ module Toys
|
|
564
562
|
# Beware that some Ruby environments (e.g. JRuby, and Ruby on Windows)
|
565
563
|
# do not support this method because they do not support fork.
|
566
564
|
#
|
567
|
-
#
|
565
|
+
# ### Example
|
568
566
|
#
|
569
567
|
# Run the "system version" tool and capture its output.
|
570
568
|
#
|
@@ -612,7 +610,7 @@ module Toys
|
|
612
610
|
# run a tool that uses a different bundle. It may also be necessary on
|
613
611
|
# environments without "fork" (such as JRuby or Ruby on Windows).
|
614
612
|
#
|
615
|
-
#
|
613
|
+
# ### Example
|
616
614
|
#
|
617
615
|
# Run the "system version" tool and capture its output.
|
618
616
|
#
|
@@ -642,7 +640,7 @@ module Toys
|
|
642
640
|
# If a block is provided, a {Toys::Utils::Exec::Controller} will be
|
643
641
|
# yielded to it.
|
644
642
|
#
|
645
|
-
#
|
643
|
+
# ### Example
|
646
644
|
#
|
647
645
|
# Run a shell script
|
648
646
|
#
|