rubu 0.0.1 → 0.0.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.
@@ -69,7 +69,7 @@ is in practice a replacement for Make and Rake type of tools. <span class='objec
69
69
  targeted to provide means for creating flexible build environments.</p>
70
70
 
71
71
  <p>Make and Rake are rule and recipe based, and they are very effective when
72
- the build process can be captured to these rules and are fairly fixed.
72
+ the build process can be captured to these rules and is fairly fixed.
73
73
  <span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> includes declarations which correspond to rules, but the
74
74
  declarations are lower level and provide more control over the behavior.
75
75
  <span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> also provides direct control over when the rules are executed.</p>
@@ -77,16 +77,16 @@ declarations are lower level and provide more control over the behavior.
77
77
  <p>Make and Rake are more compact for the simplest build environments, but
78
78
  there is a break-even point where <span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> becomes more convenient. This is
79
79
  likely to happen when the user needs many exceptions to basic rules, also
80
- when other tasks than just build task are needed.</p>
80
+ when other tasks than just build tasks are needed.</p>
81
81
 
82
82
  <p><span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> library can be used from any Ruby program, since it is just a
83
83
  library. It can also be part of a larger program as less significant part
84
84
  of the overall functionality. From maintenance point of view this can be a
85
85
  win in many cases.</p>
86
86
 
87
- <h2 id="label-Concepts">Concepts</h2>
88
-
89
- <p>TBD</p>
87
+ <p>The easiest way to get started with <span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> is to study examples (See:
88
+ “Example” chapter below). However for longer term the main concepts are
89
+ important as well (See: “Concepts” chapter below).</p>
90
90
 
91
91
  <h2 id="label-Example">Example</h2>
92
92
 
@@ -99,7 +99,7 @@ win in many cases.</p>
99
99
  files. The main file is hand written and the other file is generated with a
100
100
  script. File generation is part of the build program.</p>
101
101
 
102
- <p>Various executions of the build is captured in:</p>
102
+ <p>Different execution variations of the build program is captured in:</p>
103
103
 
104
104
  <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_example'>example</span><span class='op'>/</span><span class='id identifier rubyid_runme'>runme</span>
105
105
  </code></pre>
@@ -111,20 +111,267 @@ script. File generation is part of the build program.</p>
111
111
  <span class='id identifier rubyid_runme'>runme</span>
112
112
  </code></pre>
113
113
 
114
- <p>Also take a look into the build program:</p>
114
+ <p>Also take a look into the build program itself:</p>
115
115
 
116
116
  <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_cat'>cat</span> <span class='id identifier rubyid_example'>example</span><span class='op'>/</span><span class='id identifier rubyid_bin'>bin</span><span class='op'>/</span><span class='id identifier rubyid_rubu_example'>rubu_example</span>
117
117
  </code></pre>
118
118
 
119
119
  <p>There are comments which highlight purpose of the build program content.</p>
120
120
 
121
+ <h2 id="label-Concepts">Concepts</h2>
122
+
123
+ <p><span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> Build Program, RBP, is a Ruby program that uses the <span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> library.
124
+ Typically command line options are accepted to give options for the build
125
+ process.</p>
126
+
127
+ <p>Build programs are about collecting source files and transforming them into
128
+ targets. This process is explicit in <span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span>. Each file, whether it&#39;s
129
+ source or target, is collected within the <span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> build program. The files
130
+ are converted into <strong>Mark</strong> objects. Basically
131
+ <strong>Mark</strong> corresponds to a file, but it includes methods that
132
+ make the build process convenient.</p>
133
+
134
+ <p><strong>Step</strong> is build action that transforms source file(s) to
135
+ target file(s). For example, a C source file compilation is a
136
+ <strong>Step</strong> where one source file is converted to a corresponding
137
+ object file. <strong>Step</strong> is given source <strong>Mark</strong>
138
+ and target <strong>Mark</strong> as arguments. Hence this type of
139
+ <strong>Step</strong> a is one-to-one mapping.</p>
140
+
141
+ <p>Linking multiple objects to an executable is a many-to-one mapping. This is
142
+ performed by a <strong>Step</strong> where there are multiple sources and
143
+ one target, i.e. objects and the executable respectively.</p>
144
+
145
+ <p><strong>Step</strong> class (or object) has “step” method which includes
146
+ the <strong>Move</strong> that is needed to create the target.
147
+ <strong>Move</strong> is either a Shell or a Ruby command.
148
+ <strong>Move</strong> is executed only if necessary. Typically the
149
+ <strong>Step</strong> is sensitive to source being newer that the target,
150
+ just as with Make and Rake. However, it is possible to have a
151
+ <strong>Step</strong> that is sensitive to file content, for example.
152
+ Timestamp might change, but if the content is the same as previously, no
153
+ <strong>Move</strong> is made.</p>
154
+
155
+ <p><strong>Step</strong> is typically a simple command. In some cases
156
+ <strong>Step</strong> can include multiple <strong>Moves</strong>. These
157
+ can be performed in sequence or in parallel, with a multicore CPU.</p>
158
+
159
+ <p><strong>Trail</strong> is a collection of <strong>Steps</strong>.
160
+ <strong>Trail</strong> has a name, and it can be references by another
161
+ <strong>Trail</strong>. <strong>Trail</strong> can be sequential or
162
+ parallel. For example, C source to object compilation can be done in
163
+ parallel, but linking of objects to executable must occur after all objects
164
+ have been created.</p>
165
+
166
+ <p><span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> Build Program includes all of the above, and the last step is to
167
+ select which <strong>Trail</strong> is executed. There should be at least
168
+ “default” <strong>Trail</strong>, and typically there is also a “clean”
169
+ <strong>Trail</strong>.</p>
170
+
171
+ <p><span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> supports the configuration spaces: <strong>Order</strong>,
172
+ <strong>Var</strong>, and <strong>Info</strong>. <strong>Order</strong> is
173
+ meant to be used for controlling <span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> itself. For example if user wants
174
+ to see all executed command, then “verbose” option should be selected.</p>
175
+
176
+ <p><strong>Var</strong> is used to control how <strong>Steps</strong> behave
177
+ and also details of <strong>Move</strong> internals. <strong>Info</strong>
178
+ is meant for runtime generated information. The division is semantic and
179
+ user might choose to combine everything to <strong>Var</strong> space, for
180
+ example.</p>
181
+
182
+ <p>To summarize and highlight the relationships between concepts, see the
183
+ diagram below:</p>
184
+
185
+ <pre class="code ruby"><code class="ruby">RBP =&gt; Trial+ =&gt; Step+ [s/p] =&gt; Move+ [s/p] =&gt; Source*, Target*
186
+ =&gt; Order+
187
+ =&gt; Var*
188
+ =&gt; Info*
189
+
190
+ * = Zero or more
191
+ + = One or more
192
+ s = Serial
193
+ p = Parallel</code></pre>
194
+
195
+ <p>RBP includes <strong>Trials</strong>, <strong>Orders</strong>, and possibly
196
+ <strong>Vars</strong> and <strong>Infos</strong>. <strong>Trial</strong>
197
+ includes one or more <strong>Steps</strong>, which can be executed in
198
+ sequence or in parallel.</p>
199
+
200
+ <p><strong>Step</strong> includes one or more <strong>Moves</strong>, and they
201
+ can also be sequential or parallel. <strong>Move</strong> has typically at
202
+ least one <strong>Source</strong> and at least one <strong>Target</strong>.
203
+ However, there are exceptions as well.</p>
204
+
205
+ <p>The suggested ordering within <span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> Build Program is:</p>
206
+ <dl class="rdoc-list label-list"><dt>configuration
207
+ <dd>
208
+ <p>Process command line arguments and assign options that are used to control
209
+ the build process.</p>
210
+ </dd><dt>file collection
211
+ <dd>
212
+ <p>Collect source and target files either using Ruby with glob pattern, direct
213
+ references, or through manifest files. Convert file names to
214
+ <strong>Mark</strong> objects.</p>
215
+ </dd><dt>step definition
216
+ <dd>
217
+ <p>Define <strong>Steps</strong>. Inherit one of the <strong>Step</strong>
218
+ types (classes) and define at least the “step” method.</p>
219
+ </dd><dt>trail definition
220
+ <dd>
221
+ <p>Define <strong>Trails</strong>. Create all possible flows that user wants
222
+ to execute. Use hierarchy for your benefit in order to make RBP maintenance
223
+ as light as possible.</p>
224
+ </dd><dt>trail selection
225
+ <dd>
226
+ <p>Find the selected <strong>Trail</strong> or <strong>Trails</strong> and
227
+ execute.</p>
228
+ </dd></dl>
229
+
230
+ <h2 id="label-Configuration">Configuration</h2>
231
+
232
+ <p><strong>Order</strong> space default are set by the <span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> library and user
233
+ can override the default based on command line parameters if needed.</p>
234
+
235
+ <p>Set default values for <strong>Var</strong> space. After default setting,
236
+ override the defaults with possible control from command line arguments.</p>
237
+
238
+ <p>Finally setup <strong>Trails</strong> by calling:</p>
239
+
240
+ <pre class="code ruby"><code class="ruby"><span class='const'>Trail</span><span class='period'>.</span><span class='id identifier rubyid_setup'>setup</span>
241
+ </code></pre>
242
+
243
+ <h2 id="label-File+collection">File collection</h2>
244
+
245
+ <p>If the build environment has clear and clean directory structure, it is
246
+ typically easiest to collect files programmatically. For example, to get
247
+ all C source files:</p>
248
+
249
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_cee_files'>cee_files</span> <span class='op'>=</span> <span class='const'>Mark</span><span class='period'>.</span><span class='id identifier rubyid_glob'>glob</span><span class='lparen'>(</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='const'>Var</span><span class='lbracket'>[</span><span class='symbol'>:source_dir</span><span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>/*.c</span><span class='tstring_end'>&quot;</span></span> <span class='rparen'>)</span>
250
+ </code></pre>
251
+
252
+ <p>This creates a list of <strong>Mark</strong> objects which are source
253
+ files. The corresponding object files can be created with “peer” method:</p>
254
+
255
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_obj_files'>obj_files</span> <span class='op'>=</span> <span class='id identifier rubyid_cee_files'>cee_files</span><span class='period'>.</span><span class='id identifier rubyid_peer'>peer</span><span class='lparen'>(</span> <span class='const'>Var</span><span class='lbracket'>[</span> <span class='symbol'>:build_dir</span> <span class='rbracket'>]</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>.o</span><span class='tstring_end'>&#39;</span></span> <span class='rparen'>)</span>
256
+ </code></pre>
257
+
258
+ <p>This method invocation takes an Array of <strong>Mark</strong> objects and
259
+ calls “peer” method for them. “peer” method changes the directory and
260
+ extension, and returns a new <strong>Mark</strong> object. In some cases
261
+ also the “basename” of the file is changed. This is achieved by giving the
262
+ “peer” method a third argument specifying the new “basename”.</p>
263
+
264
+ <h2 id="label-Step+definition">Step definition</h2>
265
+
266
+ <p><strong>Step</strong> is defined by inheriting of the <span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span>
267
+ <strong>Step</strong> classes and defining the custom “step” method. If a
268
+ specific setup for the <strong>Step</strong> is required, then an
269
+ additional “setup” method can be defined as well.</p>
270
+
271
+ <pre class="code ruby"><code class="ruby"><span class='kw'>class</span> <span class='const'>CleanUp</span> <span class='op'>&lt;</span> <span class='const'>StepAlways</span>
272
+ <span class='kw'>def</span> <span class='id identifier rubyid_step'>step</span>
273
+ <span class='id identifier rubyid_shrun'>shrun</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>rm -f </span><span class='embexpr_beg'>#{</span><span class='const'>Var</span><span class='lbracket'>[</span> <span class='symbol'>:build_dir</span> <span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>/*.o</span><span class='tstring_end'>&quot;</span></span>
274
+ <span class='kw'>end</span>
275
+ <span class='kw'>end</span>
276
+ </code></pre>
277
+
278
+ <p>“setup” method is typically used to change the command according to user
279
+ configuration. “step” method is the action for <strong>Step</strong>.
280
+ <span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> executes it, if necessary. For example, if <strong>Step</strong> is
281
+ a <strong>StepAged</strong> class, then the “step” method is only called if
282
+ the source <strong>Mark</strong> is newer than the target
283
+ <strong>Mark</strong>.</p>
284
+
285
+ <p>“step” method may include only one command or a set of commands. If one
286
+ command is needed, it can be simply executed:</p>
287
+
288
+ <pre class="code ruby"><code class="ruby"><span class='kw'>def</span> <span class='id identifier rubyid_step'>step</span>
289
+ <span class='id identifier rubyid_shrun'>shrun</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>rm -f </span><span class='embexpr_beg'>#{</span><span class='const'>Var</span><span class='lbracket'>[</span> <span class='symbol'>:build_dir</span> <span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>/*.o</span><span class='tstring_end'>&quot;</span></span>
290
+ <span class='kw'>end</span>
291
+ </code></pre>
292
+
293
+ <p>If there are multiple commands, then the commands can be grouped for
294
+ sequential (“walk”) or parallel execution (“fork”).</p>
295
+
296
+ <pre class="code ruby"><code class="ruby"><span class='kw'>def</span> <span class='id identifier rubyid_step'>step</span>
297
+ <span class='id identifier rubyid_fork'>fork</span> <span class='kw'>do</span>
298
+ <span class='id identifier rubyid_shuse'>shuse</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>rm -f </span><span class='embexpr_beg'>#{</span><span class='const'>Info</span><span class='lbracket'>[</span> <span class='symbol'>:gen_files</span> <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_rpath'>rpath</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
299
+ <span class='id identifier rubyid_shuse'>shuse</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>rm -f </span><span class='embexpr_beg'>#{</span><span class='const'>Var</span><span class='lbracket'>[</span> <span class='symbol'>:build_dir</span> <span class='rbracket'>]</span><span class='embexpr_end'>}</span><span class='tstring_content'>/*.o</span><span class='tstring_end'>&quot;</span></span>
300
+ <span class='kw'>end</span>
301
+ <span class='kw'>end</span>
302
+ </code></pre>
303
+
304
+ <p>Note that the commands are defined with “shuse”. The logic is that we
305
+ don&#39;t execute the commands right away as in “shrun”. Instead we just
306
+ register the commands to the group. When the group definition is closed
307
+ (“end” keyword), it is complete, and we execute it either sequentially or
308
+ in parallel.</p>
309
+
310
+ <h2 id="label-Trail+definition">Trail definition</h2>
311
+
312
+ <p><strong>Trail</strong> is a collection of <strong>Steps</strong> or other
313
+ <strong>Trails</strong>, or a mix of both. For example, in order to compile
314
+ a set of C source files to object files, we might define:</p>
315
+
316
+ <pre class="code ruby"><code class="ruby"><span class='const'>Fork</span><span class='period'>.</span><span class='id identifier rubyid_form'>form</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>compile-cee</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>do</span>
317
+ <span class='const'>GccCompileFile</span><span class='period'>.</span><span class='id identifier rubyid_usezip'>usezip</span><span class='lparen'>(</span> <span class='id identifier rubyid_cee_files'>cee_files</span><span class='comma'>,</span> <span class='id identifier rubyid_obj_files'>obj_files</span> <span class='rparen'>)</span>
318
+ <span class='kw'>end</span>
319
+ </code></pre>
320
+
321
+ <p>This creates a parallel (“Fork”) <strong>Trail</strong> called
322
+ “compile-cee”. Collection of <strong>Steps</strong> is created with
323
+ “usezip” method. “usezip” performs two operations: it creates a zip type
324
+ mix of “cee_files” and “obj_files”. The “zip” method of Ruby Array is used.
325
+ “zip” creates an Array of <strong>Mark</strong> pairs. Each pair is passed
326
+ to a “GccCompileFile” <strong>Step</strong> object. Finally we have a
327
+ collection of <strong>Steps</strong> which are executed in parallel when
328
+ “compile-cee” is invoked.</p>
329
+
330
+ <p>Here the defined <strong>Trail</strong> from above is referenced in order
331
+ to create a <strong>Trail</strong> for the complete compile flow:</p>
332
+
333
+ <pre class="code ruby"><code class="ruby"><span class='const'>Walk</span><span class='period'>.</span><span class='id identifier rubyid_form'>form</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>default</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>do</span>
334
+ <span class='id identifier rubyid_pick'>pick</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>compile-cee</span><span class='tstring_end'>&#39;</span></span>
335
+ <span class='const'>GccLinkExe</span><span class='period'>.</span><span class='id identifier rubyid_use'>use</span><span class='lparen'>(</span> <span class='id identifier rubyid_obj_files'>obj_files</span><span class='comma'>,</span> <span class='id identifier rubyid_exe_file'>exe_file</span> <span class='rparen'>)</span>
336
+ <span class='kw'>end</span>
337
+ </code></pre>
338
+
339
+ <p>This <strong>Trail</strong> definition defines that we want to first
340
+ execute “compile-cee” and then a <strong>Step</strong> which will create an
341
+ executable from object file collection. “GccLinkExe” <strong>Step</strong>
342
+ is called with “use” method, which will register the <strong>Step</strong>
343
+ to the enclosing <strong>Trail</strong>, “default”.</p>
344
+
345
+ <h2 id="label-Trail+selection">Trail selection</h2>
346
+
347
+ <p>The final stage in RBP execution is to use command line control for
348
+ selecting the executed <strong>Trails</strong> and then execute them. The
349
+ above definition (from previous section) is executed with:</p>
350
+
351
+ <pre class="code ruby"><code class="ruby"><span class='const'>Trail</span><span class='period'>.</span><span class='id identifier rubyid_run'>run</span><span class='lparen'>(</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>default</span><span class='tstring_end'>&#39;</span></span> <span class='rparen'>)</span>
352
+ </code></pre>
353
+
354
+ <h2 id="label-Final+notes">Final notes</h2>
355
+
356
+ <p><span class='object_link'><a href="Rubu.html" title="Rubu (class)">Rubu</a></span> treats single <strong>Mark</strong> objects and Array of
357
+ <strong>Mark</strong> objects the “same” way. In practice this means that
358
+ the most common methods for <strong>Mark</strong> objects are implemented
359
+ for Array as well. Hence, you can call a <strong>Mark</strong> method for
360
+ an Array, and they will actually be applied for each individual
361
+ <strong>Mark</strong> in the collection.</p>
362
+
363
+ <p><strong>Step</strong> has sources and targets. Even if a step has only one
364
+ source and one target, the actual container is an Array. If you want to
365
+ refer to the source, i.e. the only existing source, you can use the
366
+ “source” method. Same applies to targets (i.e. use the “target” method).</p>
367
+
121
368
  <h2 id="label-Testing">Testing</h2>
122
369
 
123
370
  <p>For this version, example is the testcase.</p>
124
371
  </div></div>
125
372
 
126
373
  <div id="footer">
127
- Generated on Fri Jun 29 10:04:07 2018 by
374
+ Generated on Sun Jul 1 17:48:17 2018 by
128
375
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
129
376
  0.8.7.6 (ruby-2.3.3).
130
377
  </div>
@@ -76,8 +76,8 @@
76
76
 
77
77
 
78
78
  <li class="r1 ">
79
- <span class='object_link'><a href="Rubu/Flow.html#%5B%5D-class_method" title="Rubu::Flow.[] (method)">[]</a></span>
80
- <small>Rubu::Flow</small>
79
+ <span class='object_link'><a href="Rubu/Trail.html#%5B%5D-class_method" title="Rubu::Trail.[] (method)">[]</a></span>
80
+ <small>Rubu::Trail</small>
81
81
  </li>
82
82
 
83
83
 
@@ -112,8 +112,8 @@
112
112
 
113
113
 
114
114
  <li class="r1 ">
115
- <span class='object_link'><a href="Rubu/Build.html#date_update%3F-instance_method" title="Rubu::Build#date_update? (method)">#date_update?</a></span>
116
- <small>Rubu::Build</small>
115
+ <span class='object_link'><a href="Rubu/Step.html#date_update%3F-instance_method" title="Rubu::Step#date_update? (method)">#date_update?</a></span>
116
+ <small>Rubu::Step</small>
117
117
  </li>
118
118
 
119
119
 
@@ -124,20 +124,20 @@
124
124
 
125
125
 
126
126
  <li class="r1 ">
127
- <span class='object_link'><a href="Rubu/Action.html#display-instance_method" title="Rubu::Action#display (method)">#display</a></span>
128
- <small>Rubu::Action</small>
127
+ <span class='object_link'><a href="Rubu/Move.html#display-instance_method" title="Rubu::Move#display (method)">#display</a></span>
128
+ <small>Rubu::Move</small>
129
129
  </li>
130
130
 
131
131
 
132
132
  <li class="r2 ">
133
- <span class='object_link'><a href="Rubu/Action.html#errmsg-instance_method" title="Rubu::Action#errmsg (method)">#errmsg</a></span>
134
- <small>Rubu::Action</small>
133
+ <span class='object_link'><a href="Rubu/Move.html#errmsg-instance_method" title="Rubu::Move#errmsg (method)">#errmsg</a></span>
134
+ <small>Rubu::Move</small>
135
135
  </li>
136
136
 
137
137
 
138
138
  <li class="r1 ">
139
- <span class='object_link'><a href="Rubu/Action.html#error-instance_method" title="Rubu::Action#error (method)">#error</a></span>
140
- <small>Rubu::Action</small>
139
+ <span class='object_link'><a href="Rubu/Move.html#error-instance_method" title="Rubu::Move#error (method)">#error</a></span>
140
+ <small>Rubu::Move</small>
141
141
  </li>
142
142
 
143
143
 
@@ -154,14 +154,14 @@
154
154
 
155
155
 
156
156
  <li class="r2 ">
157
- <span class='object_link'><a href="Rubu/Build.html#fork-instance_method" title="Rubu::Build#fork (method)">#fork</a></span>
158
- <small>Rubu::Build</small>
157
+ <span class='object_link'><a href="Rubu/Step.html#fork-instance_method" title="Rubu::Step#fork (method)">#fork</a></span>
158
+ <small>Rubu::Step</small>
159
159
  </li>
160
160
 
161
161
 
162
162
  <li class="r1 ">
163
- <span class='object_link'><a href="Rubu/Flow.html#form-class_method" title="Rubu::Flow.form (method)">form</a></span>
164
- <small>Rubu::Flow</small>
163
+ <span class='object_link'><a href="Rubu/Trail.html#form-class_method" title="Rubu::Trail.form (method)">form</a></span>
164
+ <small>Rubu::Trail</small>
165
165
  </li>
166
166
 
167
167
 
@@ -172,26 +172,26 @@
172
172
 
173
173
 
174
174
  <li class="r1 ">
175
- <span class='object_link'><a href="Rubu/Action.html#host-instance_method" title="Rubu::Action#host (method)">#host</a></span>
176
- <small>Rubu::Action</small>
175
+ <span class='object_link'><a href="Rubu/Move.html#host-instance_method" title="Rubu::Move#host (method)">#host</a></span>
176
+ <small>Rubu::Move</small>
177
177
  </li>
178
178
 
179
179
 
180
180
  <li class="r2 ">
181
- <span class='object_link'><a href="Rubu/Action.html#host_in-instance_method" title="Rubu::Action#host_in (method)">#host_in</a></span>
182
- <small>Rubu::Action</small>
181
+ <span class='object_link'><a href="Rubu/Move.html#host_in-instance_method" title="Rubu::Move#host_in (method)">#host_in</a></span>
182
+ <small>Rubu::Move</small>
183
183
  </li>
184
184
 
185
185
 
186
186
  <li class="r1 ">
187
- <span class='object_link'><a href="Rubu/Action.html#host_out-instance_method" title="Rubu::Action#host_out (method)">#host_out</a></span>
188
- <small>Rubu::Action</small>
187
+ <span class='object_link'><a href="Rubu/Move.html#host_out-instance_method" title="Rubu::Move#host_out (method)">#host_out</a></span>
188
+ <small>Rubu::Move</small>
189
189
  </li>
190
190
 
191
191
 
192
192
  <li class="r2 ">
193
- <span class='object_link'><a href="Rubu/Action.html#initialize-instance_method" title="Rubu::Action#initialize (method)">#initialize</a></span>
194
- <small>Rubu::Action</small>
193
+ <span class='object_link'><a href="Rubu/Move.html#initialize-instance_method" title="Rubu::Move#initialize (method)">#initialize</a></span>
194
+ <small>Rubu::Move</small>
195
195
  </li>
196
196
 
197
197
 
@@ -214,14 +214,14 @@
214
214
 
215
215
 
216
216
  <li class="r2 ">
217
- <span class='object_link'><a href="Rubu/Build.html#initialize-instance_method" title="Rubu::Build#initialize (method)">#initialize</a></span>
218
- <small>Rubu::Build</small>
217
+ <span class='object_link'><a href="Rubu/Step.html#initialize-instance_method" title="Rubu::Step#initialize (method)">#initialize</a></span>
218
+ <small>Rubu::Step</small>
219
219
  </li>
220
220
 
221
221
 
222
222
  <li class="r1 ">
223
- <span class='object_link'><a href="Rubu/Flow.html#initialize-instance_method" title="Rubu::Flow#initialize (method)">#initialize</a></span>
224
- <small>Rubu::Flow</small>
223
+ <span class='object_link'><a href="Rubu/Trail.html#initialize-instance_method" title="Rubu::Trail#initialize (method)">#initialize</a></span>
224
+ <small>Rubu::Trail</small>
225
225
  </li>
226
226
 
227
227
 
@@ -238,14 +238,14 @@
238
238
 
239
239
 
240
240
  <li class="r2 ">
241
- <span class='object_link'><a href="Rubu/Flow.html#load_setup-class_method" title="Rubu::Flow.load_setup (method)">load_setup</a></span>
242
- <small>Rubu::Flow</small>
241
+ <span class='object_link'><a href="Rubu/Trail.html#load_setup-class_method" title="Rubu::Trail.load_setup (method)">load_setup</a></span>
242
+ <small>Rubu::Trail</small>
243
243
  </li>
244
244
 
245
245
 
246
246
  <li class="r1 ">
247
- <span class='object_link'><a href="Rubu/Build.html#mark_update%3F-instance_method" title="Rubu::Build#mark_update? (method)">#mark_update?</a></span>
248
- <small>Rubu::Build</small>
247
+ <span class='object_link'><a href="Rubu/Step.html#mark_update%3F-instance_method" title="Rubu::Step#mark_update? (method)">#mark_update?</a></span>
248
+ <small>Rubu::Step</small>
249
249
  </li>
250
250
 
251
251
 
@@ -262,20 +262,20 @@
262
262
 
263
263
 
264
264
  <li class="r2 ">
265
- <span class='object_link'><a href="Rubu/Flow.html#name-instance_method" title="Rubu::Flow#name (method)">#name</a></span>
266
- <small>Rubu::Flow</small>
265
+ <span class='object_link'><a href="Rubu/Trail.html#name-instance_method" title="Rubu::Trail#name (method)">#name</a></span>
266
+ <small>Rubu::Trail</small>
267
267
  </li>
268
268
 
269
269
 
270
270
  <li class="r1 ">
271
- <span class='object_link'><a href="Rubu/Action.html#output-instance_method" title="Rubu::Action#output (method)">#output</a></span>
272
- <small>Rubu::Action</small>
271
+ <span class='object_link'><a href="Rubu/Move.html#output-instance_method" title="Rubu::Move#output (method)">#output</a></span>
272
+ <small>Rubu::Move</small>
273
273
  </li>
274
274
 
275
275
 
276
276
  <li class="r2 ">
277
- <span class='object_link'><a href="Rubu/FlowRun.html#parallel_run-instance_method" title="Rubu::FlowRun#parallel_run (method)">#parallel_run</a></span>
278
- <small>Rubu::FlowRun</small>
277
+ <span class='object_link'><a href="Rubu/MoveStyles.html#parallel_run-instance_method" title="Rubu::MoveStyles#parallel_run (method)">#parallel_run</a></span>
278
+ <small>Rubu::MoveStyles</small>
279
279
  </li>
280
280
 
281
281
 
@@ -310,20 +310,20 @@
310
310
 
311
311
 
312
312
  <li class="r2 ">
313
- <span class='object_link'><a href="Rubu/Action.html#pick-instance_method" title="Rubu::Action#pick (method)">#pick</a></span>
314
- <small>Rubu::Action</small>
313
+ <span class='object_link'><a href="Rubu/Trail.html#pick-instance_method" title="Rubu::Trail#pick (method)">#pick</a></span>
314
+ <small>Rubu::Trail</small>
315
315
  </li>
316
316
 
317
317
 
318
318
  <li class="r1 ">
319
- <span class='object_link'><a href="Rubu/Build.html#rbdef-instance_method" title="Rubu::Build#rbdef (method)">#rbdef</a></span>
320
- <small>Rubu::Build</small>
319
+ <span class='object_link'><a href="Rubu/Step.html#rbrun-instance_method" title="Rubu::Step#rbrun (method)">#rbrun</a></span>
320
+ <small>Rubu::Step</small>
321
321
  </li>
322
322
 
323
323
 
324
324
  <li class="r2 ">
325
- <span class='object_link'><a href="Rubu/Build.html#rbrun-instance_method" title="Rubu::Build#rbrun (method)">#rbrun</a></span>
326
- <small>Rubu::Build</small>
325
+ <span class='object_link'><a href="Rubu/Step.html#rbuse-instance_method" title="Rubu::Step#rbuse (method)">#rbuse</a></span>
326
+ <small>Rubu::Step</small>
327
327
  </li>
328
328
 
329
329
 
@@ -358,20 +358,20 @@
358
358
 
359
359
 
360
360
  <li class="r2 ">
361
- <span class='object_link'><a href="Rubu/Build.html#run-instance_method" title="Rubu::Build#run (method)">#run</a></span>
362
- <small>Rubu::Build</small>
361
+ <span class='object_link'><a href="Rubu/Step.html#run-instance_method" title="Rubu::Step#run (method)">#run</a></span>
362
+ <small>Rubu::Step</small>
363
363
  </li>
364
364
 
365
365
 
366
366
  <li class="r1 ">
367
- <span class='object_link'><a href="Rubu/Flow.html#run-instance_method" title="Rubu::Flow#run (method)">#run</a></span>
368
- <small>Rubu::Flow</small>
367
+ <span class='object_link'><a href="Rubu/Trail.html#run-instance_method" title="Rubu::Trail#run (method)">#run</a></span>
368
+ <small>Rubu::Trail</small>
369
369
  </li>
370
370
 
371
371
 
372
372
  <li class="r2 ">
373
- <span class='object_link'><a href="Rubu/Flow.html#run-class_method" title="Rubu::Flow.run (method)">run</a></span>
374
- <small>Rubu::Flow</small>
373
+ <span class='object_link'><a href="Rubu/Trail.html#run-class_method" title="Rubu::Trail.run (method)">run</a></span>
374
+ <small>Rubu::Trail</small>
375
375
  </li>
376
376
 
377
377
 
@@ -388,8 +388,8 @@
388
388
 
389
389
 
390
390
  <li class="r1 ">
391
- <span class='object_link'><a href="Rubu/FlowRun.html#serial_run-instance_method" title="Rubu::FlowRun#serial_run (method)">#serial_run</a></span>
392
- <small>Rubu::FlowRun</small>
391
+ <span class='object_link'><a href="Rubu/MoveStyles.html#serial_run-instance_method" title="Rubu::MoveStyles#serial_run (method)">#serial_run</a></span>
392
+ <small>Rubu::MoveStyles</small>
393
393
  </li>
394
394
 
395
395
 
@@ -406,26 +406,26 @@
406
406
 
407
407
 
408
408
  <li class="r2 ">
409
- <span class='object_link'><a href="Rubu/Build.html#setup-instance_method" title="Rubu::Build#setup (method)">#setup</a></span>
410
- <small>Rubu::Build</small>
409
+ <span class='object_link'><a href="Rubu/Step.html#setup-instance_method" title="Rubu::Step#setup (method)">#setup</a></span>
410
+ <small>Rubu::Step</small>
411
411
  </li>
412
412
 
413
413
 
414
414
  <li class="r1 ">
415
- <span class='object_link'><a href="Rubu/Flow.html#setup-class_method" title="Rubu::Flow.setup (method)">setup</a></span>
416
- <small>Rubu::Flow</small>
415
+ <span class='object_link'><a href="Rubu/Trail.html#setup-class_method" title="Rubu::Trail.setup (method)">setup</a></span>
416
+ <small>Rubu::Trail</small>
417
417
  </li>
418
418
 
419
419
 
420
420
  <li class="r2 ">
421
- <span class='object_link'><a href="Rubu/Build.html#shdef-instance_method" title="Rubu::Build#shdef (method)">#shdef</a></span>
422
- <small>Rubu::Build</small>
421
+ <span class='object_link'><a href="Rubu/Step.html#shrun-instance_method" title="Rubu::Step#shrun (method)">#shrun</a></span>
422
+ <small>Rubu::Step</small>
423
423
  </li>
424
424
 
425
425
 
426
426
  <li class="r1 ">
427
- <span class='object_link'><a href="Rubu/Build.html#shrun-instance_method" title="Rubu::Build#shrun (method)">#shrun</a></span>
428
- <small>Rubu::Build</small>
427
+ <span class='object_link'><a href="Rubu/Step.html#shuse-instance_method" title="Rubu::Step#shuse (method)">#shuse</a></span>
428
+ <small>Rubu::Step</small>
429
429
  </li>
430
430
 
431
431
 
@@ -436,38 +436,38 @@
436
436
 
437
437
 
438
438
  <li class="r1 ">
439
- <span class='object_link'><a href="Rubu/Build.html#source-instance_method" title="Rubu::Build#source (method)">#source</a></span>
440
- <small>Rubu::Build</small>
439
+ <span class='object_link'><a href="Rubu/Step.html#source-instance_method" title="Rubu::Step#source (method)">#source</a></span>
440
+ <small>Rubu::Step</small>
441
441
  </li>
442
442
 
443
443
 
444
444
  <li class="r2 ">
445
- <span class='object_link'><a href="Rubu/Build.html#sources-instance_method" title="Rubu::Build#sources (method)">#sources</a></span>
446
- <small>Rubu::Build</small>
445
+ <span class='object_link'><a href="Rubu/Step.html#sources-instance_method" title="Rubu::Step#sources (method)">#sources</a></span>
446
+ <small>Rubu::Step</small>
447
447
  </li>
448
448
 
449
449
 
450
450
  <li class="r1 ">
451
- <span class='object_link'><a href="Rubu/Action.html#status-instance_method" title="Rubu::Action#status (method)">#status</a></span>
452
- <small>Rubu::Action</small>
451
+ <span class='object_link'><a href="Rubu/Move.html#status-instance_method" title="Rubu::Move#status (method)">#status</a></span>
452
+ <small>Rubu::Move</small>
453
453
  </li>
454
454
 
455
455
 
456
456
  <li class="r2 ">
457
- <span class='object_link'><a href="Rubu/Action.html#subs-instance_method" title="Rubu::Action#subs (method)">#subs</a></span>
458
- <small>Rubu::Action</small>
457
+ <span class='object_link'><a href="Rubu/Move.html#subs-instance_method" title="Rubu::Move#subs (method)">#subs</a></span>
458
+ <small>Rubu::Move</small>
459
459
  </li>
460
460
 
461
461
 
462
462
  <li class="r1 ">
463
- <span class='object_link'><a href="Rubu/Build.html#target-instance_method" title="Rubu::Build#target (method)">#target</a></span>
464
- <small>Rubu::Build</small>
463
+ <span class='object_link'><a href="Rubu/Step.html#target-instance_method" title="Rubu::Step#target (method)">#target</a></span>
464
+ <small>Rubu::Step</small>
465
465
  </li>
466
466
 
467
467
 
468
468
  <li class="r2 ">
469
- <span class='object_link'><a href="Rubu/Build.html#targets-instance_method" title="Rubu::Build#targets (method)">#targets</a></span>
470
- <small>Rubu::Build</small>
469
+ <span class='object_link'><a href="Rubu/Step.html#targets-instance_method" title="Rubu::Step#targets (method)">#targets</a></span>
470
+ <small>Rubu::Step</small>
471
471
  </li>
472
472
 
473
473
 
@@ -478,38 +478,38 @@
478
478
 
479
479
 
480
480
  <li class="r2 ">
481
- <span class='object_link'><a href="Rubu/Build.html#update%3F-instance_method" title="Rubu::Build#update? (method)">#update?</a></span>
482
- <small>Rubu::Build</small>
481
+ <span class='object_link'><a href="Rubu/Step.html#update%3F-instance_method" title="Rubu::Step#update? (method)">#update?</a></span>
482
+ <small>Rubu::Step</small>
483
483
  </li>
484
484
 
485
485
 
486
486
  <li class="r1 ">
487
- <span class='object_link'><a href="Rubu/AlwaysBuild.html#update%3F-instance_method" title="Rubu::AlwaysBuild#update? (method)">#update?</a></span>
488
- <small>Rubu::AlwaysBuild</small>
487
+ <span class='object_link'><a href="Rubu/StepAlways.html#update%3F-instance_method" title="Rubu::StepAlways#update? (method)">#update?</a></span>
488
+ <small>Rubu::StepAlways</small>
489
489
  </li>
490
490
 
491
491
 
492
492
  <li class="r2 ">
493
- <span class='object_link'><a href="Rubu/DateBuild.html#update%3F-instance_method" title="Rubu::DateBuild#update? (method)">#update?</a></span>
494
- <small>Rubu::DateBuild</small>
493
+ <span class='object_link'><a href="Rubu/StepAged.html#update%3F-instance_method" title="Rubu::StepAged#update? (method)">#update?</a></span>
494
+ <small>Rubu::StepAged</small>
495
495
  </li>
496
496
 
497
497
 
498
498
  <li class="r1 ">
499
- <span class='object_link'><a href="Rubu/MarkBuild.html#update%3F-instance_method" title="Rubu::MarkBuild#update? (method)">#update?</a></span>
500
- <small>Rubu::MarkBuild</small>
499
+ <span class='object_link'><a href="Rubu/StepMark.html#update%3F-instance_method" title="Rubu::StepMark#update? (method)">#update?</a></span>
500
+ <small>Rubu::StepMark</small>
501
501
  </li>
502
502
 
503
503
 
504
504
  <li class="r2 ">
505
- <span class='object_link'><a href="Rubu/Action.html#use-instance_method" title="Rubu::Action#use (method)">#use</a></span>
506
- <small>Rubu::Action</small>
505
+ <span class='object_link'><a href="Rubu/Move.html#use-instance_method" title="Rubu::Move#use (method)">#use</a></span>
506
+ <small>Rubu::Move</small>
507
507
  </li>
508
508
 
509
509
 
510
510
  <li class="r1 ">
511
- <span class='object_link'><a href="Rubu/Build.html#use-class_method" title="Rubu::Build.use (method)">use</a></span>
512
- <small>Rubu::Build</small>
511
+ <span class='object_link'><a href="Rubu/Step.html#use-class_method" title="Rubu::Step.use (method)">use</a></span>
512
+ <small>Rubu::Step</small>
513
513
  </li>
514
514
 
515
515
 
@@ -520,8 +520,8 @@
520
520
 
521
521
 
522
522
  <li class="r1 ">
523
- <span class='object_link'><a href="Rubu/Build.html#usezip-class_method" title="Rubu::Build.usezip (method)">usezip</a></span>
524
- <small>Rubu::Build</small>
523
+ <span class='object_link'><a href="Rubu/Step.html#usezip-class_method" title="Rubu::Step.usezip (method)">usezip</a></span>
524
+ <small>Rubu::Step</small>
525
525
  </li>
526
526
 
527
527
 
@@ -532,14 +532,14 @@
532
532
 
533
533
 
534
534
  <li class="r1 ">
535
- <span class='object_link'><a href="Rubu/Build.html#walk-instance_method" title="Rubu::Build#walk (method)">#walk</a></span>
536
- <small>Rubu::Build</small>
535
+ <span class='object_link'><a href="Rubu/Step.html#walk-instance_method" title="Rubu::Step#walk (method)">#walk</a></span>
536
+ <small>Rubu::Step</small>
537
537
  </li>
538
538
 
539
539
 
540
540
  <li class="r2 ">
541
- <span class='object_link'><a href="Rubu/Build.html#zip-class_method" title="Rubu::Build.zip (method)">zip</a></span>
542
- <small>Rubu::Build</small>
541
+ <span class='object_link'><a href="Rubu/Step.html#zip-class_method" title="Rubu::Step.zip (method)">zip</a></span>
542
+ <small>Rubu::Step</small>
543
543
  </li>
544
544
 
545
545