doc/TaskJuggler/Tj3Client.html in taskjuggler-0.0.8 vs doc/TaskJuggler/Tj3Client.html in taskjuggler-0.0.9

- old
+ new

@@ -77,18 +77,14 @@ <li><a href="#method-i-checkCommand">#checkCommand</a></li> <li><a href="#method-i-connectDaemon">#connectDaemon</a></li> - <li><a href="#method-i-connectToProjectServer">#connectToProjectServer</a></li> - <li><a href="#method-i-connectToReportServer">#connectToReportServer</a></li> <li><a href="#method-i-disconnectDaemon">#disconnectDaemon</a></li> - <li><a href="#method-i-disconnectProjectServer">#disconnectProjectServer</a></li> - <li><a href="#method-i-disconnectReportServer">#disconnectReportServer</a></li> <li><a href="#method-i-error">#error</a></li> <li><a href="#method-i-executeCommand">#executeCommand</a></li> @@ -155,10 +151,12 @@ <li><a href="../TaskJuggler/AttributeBase.html">TaskJuggler::AttributeBase</a></li> <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li> + <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li> + <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li> <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li> <li><a href="../TaskJuggler/BookingListAttribute.html">TaskJuggler::BookingListAttribute</a></li> @@ -233,10 +231,12 @@ <li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li> <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li> + <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li> + <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li> <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li> <li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li> @@ -265,10 +265,12 @@ <li><a href="../TaskJuggler/LogicalExpression.html">TaskJuggler::LogicalExpression</a></li> <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li> + <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li> + <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li> <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li> <li><a href="../TaskJuggler/LogicalOperation.html">TaskJuggler::LogicalOperation</a></li> @@ -545,10 +547,12 @@ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li> <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li> + <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li> + <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li> <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li> <li><a href="../TaskJuggler/XMLBlob.html">TaskJuggler::XMLBlob</a></li> @@ -571,12 +575,10 @@ <li><a href="../RuntimeConfig.html">RuntimeConfig</a></li> <li><a href="../String.html">String</a></li> - <li><a href="../StringIO.html">StringIO</a></li> - </ul> <div id="no-class-search-results" style="display: none;">No matching classes.</div> </div> @@ -628,74 +630,76 @@ <div class="method-source-code" id="new-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 30</span> -30: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span> -31: <span class="ruby-keyword kw">super</span> -32: -33: <span class="ruby-comment cmt"># For security reasons, this will probably not change. All DRb</span> -34: <span class="ruby-comment cmt"># operations are limited to localhost only. The client and the sever</span> -35: <span class="ruby-comment cmt"># must have access to the identical file system.</span> -36: <span class="ruby-ivar">@host</span> = <span class="ruby-value str">'127.0.0.1'</span> -37: <span class="ruby-comment cmt"># The default port. 'T' and 'J' in ASCII decimal</span> -38: <span class="ruby-ivar">@port</span> = <span class="ruby-value">8474</span> -39: <span class="ruby-comment cmt"># The file with the server URI in case port is 0.</span> -40: <span class="ruby-ivar">@uriFile</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">getwd</span>, <span class="ruby-value str">'.tj3d.uri'</span>) -41: <span class="ruby-comment cmt"># This must must be changed for the communication to work.</span> -42: <span class="ruby-ivar">@authKey</span> = <span class="ruby-keyword kw">nil</span> -43: <span class="ruby-comment cmt"># Determines whether report IDs are fix IDs or regular expressions that</span> -44: <span class="ruby-comment cmt"># match a set of reports.</span> -45: <span class="ruby-ivar">@regExpMode</span> = <span class="ruby-keyword kw">false</span> -46: -47: <span class="ruby-ivar">@mandatoryArgs</span> = <span class="ruby-value str">'&lt;command&gt; [arg1 arg2 ...]'</span> -48: -49: <span class="ruby-comment cmt"># This list describes the supported command line commands and their</span> -50: <span class="ruby-comment cmt"># parameter.</span> -51: <span class="ruby-comment cmt"># :label : The command name</span> -52: <span class="ruby-comment cmt"># :args : A list of parameters. If the first character is a '+' the</span> -53: <span class="ruby-comment cmt"># parameter must be provided 1 or more times. If the first character is</span> -54: <span class="ruby-comment cmt"># a '*' the parameter must be provided 0 or more times. Repeatable and</span> -55: <span class="ruby-comment cmt"># optional paramters must follow the mandatory ones.</span> -56: <span class="ruby-comment cmt"># :descr : A short description of the command used for the help text.</span> -57: <span class="ruby-ivar">@commands</span> = [ -58: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'status'</span>, -59: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [], -60: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Display the status of the available projects'</span> }, -61: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'terminate'</span>, + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 31</span> +31: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span> +32: <span class="ruby-keyword kw">super</span> +33: +34: <span class="ruby-comment cmt"># For security reasons, this will probably not change. All DRb</span> +35: <span class="ruby-comment cmt"># operations are limited to localhost only. The client and the sever</span> +36: <span class="ruby-comment cmt"># must have access to the identical file system.</span> +37: <span class="ruby-ivar">@host</span> = <span class="ruby-value str">'127.0.0.1'</span> +38: <span class="ruby-comment cmt"># The default port. 'T' and 'J' in ASCII decimal</span> +39: <span class="ruby-ivar">@port</span> = <span class="ruby-value">8474</span> +40: <span class="ruby-comment cmt"># The file with the server URI in case port is 0.</span> +41: <span class="ruby-ivar">@uriFile</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">getwd</span>, <span class="ruby-value str">'.tj3d.uri'</span>) +42: <span class="ruby-comment cmt"># This must must be changed for the communication to work.</span> +43: <span class="ruby-ivar">@authKey</span> = <span class="ruby-keyword kw">nil</span> +44: <span class="ruby-comment cmt"># Determines whether report IDs are fix IDs or regular expressions that</span> +45: <span class="ruby-comment cmt"># match a set of reports.</span> +46: <span class="ruby-ivar">@regExpMode</span> = <span class="ruby-keyword kw">false</span> +47: <span class="ruby-comment cmt"># List of requested output formats for reports.</span> +48: <span class="ruby-ivar">@formats</span> = <span class="ruby-keyword kw">nil</span> +49: +50: <span class="ruby-ivar">@mandatoryArgs</span> = <span class="ruby-value str">'&lt;command&gt; [arg1 arg2 ...]'</span> +51: +52: <span class="ruby-comment cmt"># This list describes the supported command line commands and their</span> +53: <span class="ruby-comment cmt"># parameter.</span> +54: <span class="ruby-comment cmt"># :label : The command name</span> +55: <span class="ruby-comment cmt"># :args : A list of parameters. If the first character is a '+' the</span> +56: <span class="ruby-comment cmt"># parameter must be provided 1 or more times. If the first character is</span> +57: <span class="ruby-comment cmt"># a '*' the parameter must be provided 0 or more times. Repeatable and</span> +58: <span class="ruby-comment cmt"># optional paramters must follow the mandatory ones.</span> +59: <span class="ruby-comment cmt"># :descr : A short description of the command used for the help text.</span> +60: <span class="ruby-ivar">@commands</span> = [ +61: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'status'</span>, 62: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [], -63: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Terminate the TaskJuggler daemon'</span> }, -64: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'add'</span>, -65: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-value str">'tjp file'</span>, <span class="ruby-value str">'*tji file'</span>], -66: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Add a new project or update and existing one'</span> }, -67: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'update'</span>, -68: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [], -69: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Reload all projects that have modified files and '</span><span class="ruby-operator">+</span> -70: <span class="ruby-value str">'are not being reloaded already'</span> }, -71: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'remove'</span>, -72: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-value str">'+project ID'</span> ], -73: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Remove the project with the specified ID from the '</span> <span class="ruby-operator">+</span> -74: <span class="ruby-value str">'daemon'</span> }, -75: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'report'</span>, -76: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-value str">'project ID'</span>, <span class="ruby-value str">'+report ID'</span>, <span class="ruby-value str">'!='</span>, <span class="ruby-value str">'*tji file'</span>], -77: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Generate the report with the provided ID for '</span> <span class="ruby-operator">+</span> -78: <span class="ruby-value str">'the project with the given ID'</span>}, -79: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'list-reports'</span>, -80: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-value str">'project ID'</span>, <span class="ruby-value str">'!report ID'</span> ], -81: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'List all available reports of the project or those '</span> <span class="ruby-operator">+</span> -82: <span class="ruby-value str">'that match the provided report ID'</span> }, -83: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'check-ts'</span>, -84: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-value str">'project ID'</span>, <span class="ruby-value str">'time sheet'</span> ], -85: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Check the provided time sheet for correctness '</span> <span class="ruby-operator">+</span> -86: <span class="ruby-value str">'against the project with the given ID'</span>}, -87: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'check-ss'</span>, -88: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-value str">'project ID'</span>, <span class="ruby-value str">'status sheet'</span> ], -89: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Check the provided status sheet for correctness '</span> <span class="ruby-operator">+</span> -90: <span class="ruby-value str">'against the project with the given ID'</span>} -91: ] -92: <span class="ruby-keyword kw">end</span></pre> +63: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Display the status of the available projects'</span> }, +64: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'terminate'</span>, +65: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [], +66: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Terminate the TaskJuggler daemon'</span> }, +67: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'add'</span>, +68: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-value str">'tjp file'</span>, <span class="ruby-value str">'*tji file'</span>], +69: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Add a new project or update and existing one'</span> }, +70: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'update'</span>, +71: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [], +72: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Reload all projects that have modified files and '</span><span class="ruby-operator">+</span> +73: <span class="ruby-value str">'are not being reloaded already'</span> }, +74: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'remove'</span>, +75: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-value str">'+project ID'</span> ], +76: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Remove the project with the specified ID from the '</span> <span class="ruby-operator">+</span> +77: <span class="ruby-value str">'daemon'</span> }, +78: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'report'</span>, +79: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-value str">'project ID'</span>, <span class="ruby-value str">'+report ID'</span>, <span class="ruby-value str">'!='</span>, <span class="ruby-value str">'*tji file'</span>], +80: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Generate the report with the provided ID for '</span> <span class="ruby-operator">+</span> +81: <span class="ruby-value str">'the project with the given ID'</span>}, +82: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'list-reports'</span>, +83: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-value str">'project ID'</span>, <span class="ruby-value str">'!report ID'</span> ], +84: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'List all available reports of the project or those '</span> <span class="ruby-operator">+</span> +85: <span class="ruby-value str">'that match the provided report ID'</span> }, +86: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'check-ts'</span>, +87: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-value str">'project ID'</span>, <span class="ruby-value str">'time sheet'</span> ], +88: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Check the provided time sheet for correctness '</span> <span class="ruby-operator">+</span> +89: <span class="ruby-value str">'against the project with the given ID'</span>}, +90: { <span class="ruby-value">:label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'check-ss'</span>, +91: <span class="ruby-value">:args</span> =<span class="ruby-operator">&gt;</span> [ <span class="ruby-value str">'project ID'</span>, <span class="ruby-value str">'status sheet'</span> ], +92: <span class="ruby-value">:descr</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Check the provided status sheet for correctness '</span> <span class="ruby-operator">+</span> +93: <span class="ruby-value str">'against the project with the given ID'</span>} +94: ] +95: <span class="ruby-keyword kw">end</span></pre> </div> </div> @@ -728,25 +732,25 @@ <div class="method-source-code" id="main-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 141</span> -141: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span> -142: <span class="ruby-identifier">args</span> = <span class="ruby-keyword kw">super</span> -143: <span class="ruby-comment cmt"># Run a first check of the non-option command line arguments.</span> -144: <span class="ruby-identifier">checkCommand</span>(<span class="ruby-identifier">args</span>) -145: <span class="ruby-comment cmt"># Read some configuration variables. Except for the authKey, they are</span> -146: <span class="ruby-comment cmt"># all optional.</span> -147: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-value str">'global'</span>) -148: -149: <span class="ruby-identifier">connectDaemon</span> -150: <span class="ruby-identifier">retVal</span> = <span class="ruby-identifier">executeCommand</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]) -151: <span class="ruby-identifier">disconnectDaemon</span> -152: -153: <span class="ruby-identifier">retVal</span> -154: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 153</span> +153: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span> +154: <span class="ruby-identifier">args</span> = <span class="ruby-keyword kw">super</span> +155: <span class="ruby-comment cmt"># Run a first check of the non-option command line arguments.</span> +156: <span class="ruby-identifier">checkCommand</span>(<span class="ruby-identifier">args</span>) +157: <span class="ruby-comment cmt"># Read some configuration variables. Except for the authKey, they are</span> +158: <span class="ruby-comment cmt"># all optional.</span> +159: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-value str">'global'</span>) +160: +161: <span class="ruby-identifier">connectDaemon</span> +162: <span class="ruby-identifier">retVal</span> = <span class="ruby-identifier">executeCommand</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]) +163: <span class="ruby-identifier">disconnectDaemon</span> +164: +165: <span class="ruby-identifier">retVal</span> +166: <span class="ruby-keyword kw">end</span></pre> </div> </div> @@ -773,51 +777,60 @@ <div class="method-source-code" id="process-rguments-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 94</span> - 94: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>) - 95: <span class="ruby-keyword kw">super</span> <span class="ruby-keyword kw">do</span> - 96: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">banner</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">The TaskJuggler client is used to send commands and data to the TaskJugglerdaemon. The communication is done via TCP/IP.The following commands are supported:</span> - 97: - 98: <span class="ruby-comment cmt"># Convert the command list into a help text.</span> - 99: <span class="ruby-ivar">@commands</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">cmd</span><span class="ruby-operator">|</span> -100: <span class="ruby-identifier">tail</span> = <span class="ruby-value str">''</span> -101: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">cmd</span>[<span class="ruby-value">:args</span>].<span class="ruby-identifier">dup</span> -102: <span class="ruby-identifier">args</span>.<span class="ruby-identifier">map!</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> -103: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'*'</span> -104: <span class="ruby-node">&quot;[&lt;#{c[1..-1]}&gt; ...]&quot;</span> -105: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'+'</span> -106: <span class="ruby-node">&quot;&lt;#{c[1..-1]}&gt; [&lt;#{c[1..-1]}&gt; ...]&quot;</span> -107: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'!'</span> -108: <span class="ruby-identifier">tail</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">']'</span> -109: <span class="ruby-node">&quot;[#{c[1..-1]} &quot;</span> -110: <span class="ruby-keyword kw">else</span> -111: <span class="ruby-node">&quot;&lt;#{c}&gt;&quot;</span> -112: <span class="ruby-keyword kw">end</span> -113: <span class="ruby-keyword kw">end</span> -114: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">' '</span>) -115: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">banner</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot; #{cmd[:label] + ' ' + args + tail}&quot;</span> <span class="ruby-operator">+</span> -116: <span class="ruby-node">&quot;\n\n#{' ' * 10 + format(cmd[:descr], 10)}\n&quot;</span> -117: <span class="ruby-keyword kw">end</span> -118: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-p'</span>, <span class="ruby-value str">'--port &lt;NUMBER&gt;'</span>, <span class="ruby-constant">Integer</span>, -119: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'Use the specified TCP/IP port'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> -120: <span class="ruby-ivar">@port</span> = <span class="ruby-identifier">arg</span> -121: <span class="ruby-keyword kw">end</span> -122: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--urifile'</span>, <span class="ruby-constant">String</span>, -123: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'If the port is 0, use this file to get the URI '</span> <span class="ruby-operator">+</span> -124: <span class="ruby-value str">'of the server.'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> -125: <span class="ruby-ivar">@uriFile</span> = <span class="ruby-identifier">arg</span> -126: <span class="ruby-keyword kw">end</span> -127: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-r'</span>, <span class="ruby-value str">'--regexp'</span>, -128: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'The report IDs are not fixed but regular expressions '</span> <span class="ruby-operator">+</span> -129: <span class="ruby-value str">'that match a set of reports'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> -130: <span class="ruby-ivar">@regExpMode</span> = <span class="ruby-keyword kw">true</span> -131: <span class="ruby-keyword kw">end</span> -132: <span class="ruby-keyword kw">end</span> -133: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 97</span> + 97: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>) + 98: <span class="ruby-keyword kw">super</span> <span class="ruby-keyword kw">do</span> + 99: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">banner</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">The TaskJuggler client is used to send commands and data to the TaskJugglerdaemon. The communication is done via TCP/IP.The following commands are supported:</span> +100: +101: <span class="ruby-comment cmt"># Convert the command list into a help text.</span> +102: <span class="ruby-ivar">@commands</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">cmd</span><span class="ruby-operator">|</span> +103: <span class="ruby-identifier">tail</span> = <span class="ruby-value str">''</span> +104: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">cmd</span>[<span class="ruby-value">:args</span>].<span class="ruby-identifier">dup</span> +105: <span class="ruby-identifier">args</span>.<span class="ruby-identifier">map!</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> +106: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'*'</span> +107: <span class="ruby-node">&quot;[&lt;#{c[1..-1]}&gt; ...]&quot;</span> +108: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'+'</span> +109: <span class="ruby-node">&quot;&lt;#{c[1..-1]}&gt; [&lt;#{c[1..-1]}&gt; ...]&quot;</span> +110: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'!'</span> +111: <span class="ruby-identifier">tail</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">']'</span> +112: <span class="ruby-node">&quot;[#{c[1..-1]} &quot;</span> +113: <span class="ruby-keyword kw">else</span> +114: <span class="ruby-node">&quot;&lt;#{c}&gt;&quot;</span> +115: <span class="ruby-keyword kw">end</span> +116: <span class="ruby-keyword kw">end</span> +117: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">' '</span>) +118: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">banner</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot; #{cmd[:label] + ' ' + args + tail}&quot;</span> <span class="ruby-operator">+</span> +119: <span class="ruby-node">&quot;\n\n#{' ' * 10 + format(cmd[:descr], 10)}\n&quot;</span> +120: <span class="ruby-keyword kw">end</span> +121: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-p'</span>, <span class="ruby-value str">'--port &lt;NUMBER&gt;'</span>, <span class="ruby-constant">Integer</span>, +122: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'Use the specified TCP/IP port'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> +123: <span class="ruby-ivar">@port</span> = <span class="ruby-identifier">arg</span> +124: <span class="ruby-keyword kw">end</span> +125: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--urifile'</span>, <span class="ruby-constant">String</span>, +126: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'If the port is 0, use this file to get the URI '</span> <span class="ruby-operator">+</span> +127: <span class="ruby-value str">'of the server.'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> +128: <span class="ruby-ivar">@uriFile</span> = <span class="ruby-identifier">arg</span> +129: <span class="ruby-keyword kw">end</span> +130: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-r'</span>, <span class="ruby-value str">'--regexp'</span>, +131: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'The report IDs are not fixed but regular expressions '</span> <span class="ruby-operator">+</span> +132: <span class="ruby-value str">'that match a set of reports'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> +133: <span class="ruby-ivar">@regExpMode</span> = <span class="ruby-keyword kw">true</span> +134: <span class="ruby-keyword kw">end</span> +135: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--format [FORMAT]'</span>, [ <span class="ruby-value">:csv</span>, <span class="ruby-value">:html</span>, <span class="ruby-value">:niku</span>, <span class="ruby-value">:tjp</span> ], +136: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'Request the report to be generated in the specified'</span> <span class="ruby-operator">+</span> +137: <span class="ruby-value str">'format. Use multiple options to request multiple '</span> <span class="ruby-operator">+</span> +138: <span class="ruby-value str">'formats. Supported formats are csv, html, niku and '</span> <span class="ruby-operator">+</span> +139: <span class="ruby-value str">'tjp. By default, the formats specified in the report '</span> <span class="ruby-operator">+</span> +140: <span class="ruby-value str">'definition are used.'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> +141: <span class="ruby-ivar">@formats</span> = [] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@formats</span> +142: <span class="ruby-ivar">@formats</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">arg</span> +143: <span class="ruby-keyword kw">end</span> +144: <span class="ruby-keyword kw">end</span> +145: <span class="ruby-keyword kw">end</span></pre> </div> </div> @@ -852,23 +865,23 @@ <div class="method-source-code" id="add-iles-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 446</span> -446: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addFiles</span>(<span class="ruby-identifier">tjiFiles</span>) -447: <span class="ruby-identifier">tjiFiles</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span> -448: <span class="ruby-keyword kw">begin</span> -449: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">addFile</span>(<span class="ruby-ivar">@rs_authKey</span>, <span class="ruby-identifier">file</span>) -450: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> -451: <span class="ruby-keyword kw">end</span> -452: <span class="ruby-keyword kw">rescue</span> -453: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Cannot add file #{file} to ReportServer&quot;</span>) -454: <span class="ruby-keyword kw">end</span> -455: <span class="ruby-keyword kw">end</span> -456: <span class="ruby-keyword kw">true</span> -457: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 429</span> +429: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addFiles</span>(<span class="ruby-identifier">tjiFiles</span>) +430: <span class="ruby-identifier">tjiFiles</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span> +431: <span class="ruby-keyword kw">begin</span> +432: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">addFile</span>(<span class="ruby-ivar">@rs_authKey</span>, <span class="ruby-identifier">file</span>) +433: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> +434: <span class="ruby-keyword kw">end</span> +435: <span class="ruby-keyword kw">rescue</span> +436: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Cannot add file #{file} to ReportServer&quot;</span>) +437: <span class="ruby-keyword kw">end</span> +438: <span class="ruby-keyword kw">end</span> +439: <span class="ruby-keyword kw">true</span> +440: <span class="ruby-keyword kw">end</span></pre> </div> </div> @@ -899,19 +912,19 @@ <div class="method-source-code" id="call-aemon-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 415</span> -415: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">callDaemon</span>(<span class="ruby-identifier">command</span>, <span class="ruby-identifier">args</span>) -416: <span class="ruby-keyword kw">begin</span> -417: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@broker</span>.<span class="ruby-identifier">command</span>(<span class="ruby-ivar">@authKey</span>, <span class="ruby-identifier">command</span>, <span class="ruby-identifier">args</span>) -418: <span class="ruby-keyword kw">rescue</span> -419: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Call to TaskJuggler server on host '#{@host}' &quot;</span> <span class="ruby-operator">+</span> -420: <span class="ruby-node">&quot;port #{@port} failed: #{$!}&quot;</span>) -421: <span class="ruby-keyword kw">end</span> -422: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 398</span> +398: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">callDaemon</span>(<span class="ruby-identifier">command</span>, <span class="ruby-identifier">args</span>) +399: <span class="ruby-keyword kw">begin</span> +400: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@broker</span>.<span class="ruby-identifier">command</span>(<span class="ruby-ivar">@authKey</span>, <span class="ruby-identifier">command</span>, <span class="ruby-identifier">args</span>) +401: <span class="ruby-keyword kw">rescue</span> +402: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Call to TaskJuggler server on host '#{@host}' &quot;</span> <span class="ruby-operator">+</span> +403: <span class="ruby-node">&quot;port #{@port} failed: #{$!}&quot;</span>) +404: <span class="ruby-keyword kw">end</span> +405: <span class="ruby-keyword kw">end</span></pre> </div> </div> @@ -938,39 +951,39 @@ <div class="method-source-code" id="check-ommand-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 158</span> -158: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkCommand</span>(<span class="ruby-identifier">args</span>) -159: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">empty?</span> -160: <span class="ruby-identifier">errorMessage</span> = <span class="ruby-value str">'You must specify a command!'</span> -161: <span class="ruby-keyword kw">else</span> -162: <span class="ruby-identifier">errorMessage</span> = <span class="ruby-node">&quot;Unknown command #{args[0]}&quot;</span> -163: <span class="ruby-ivar">@commands</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">cmd</span><span class="ruby-operator">|</span> -164: <span class="ruby-comment cmt"># The first value of args is the command name.</span> -165: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cmd</span>[<span class="ruby-value">:label</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>] -166: <span class="ruby-comment cmt"># Find out how many arguments we need to have and if that's a</span> -167: <span class="ruby-comment cmt"># lower limit or a fixed value.</span> -168: <span class="ruby-identifier">minArgs</span> = <span class="ruby-value">0</span> -169: <span class="ruby-identifier">varArgs</span> = <span class="ruby-keyword kw">false</span> -170: <span class="ruby-identifier">cmd</span>[<span class="ruby-value">:args</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> -171: <span class="ruby-comment cmt"># Arguments starting with '+' must have 1 or more showings.</span> -172: <span class="ruby-comment cmt"># Arguments starting with '*' may show up 0 or more times.</span> -173: <span class="ruby-identifier">minArgs</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-value str">'!*'</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">arg</span>[<span class="ruby-value">0</span>]) -174: <span class="ruby-identifier">varArgs</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-value str">'!*+'</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">arg</span>[<span class="ruby-value">0</span>]) -175: <span class="ruby-keyword kw">end</span> -176: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">minArgs</span> -177: <span class="ruby-identifier">errorMessage</span> = <span class="ruby-node">&quot;Command #{args[0]} must have &quot;</span> <span class="ruby-operator">+</span> -178: <span class="ruby-node">&quot;#{varArgs ? 'at least ' : ''}#{minArgs} &quot;</span> <span class="ruby-operator">+</span> -179: <span class="ruby-value str">'arguments'</span> -180: <span class="ruby-keyword kw">end</span> -181: <span class="ruby-keyword kw">end</span> -182: <span class="ruby-keyword kw">end</span> -183: -184: <span class="ruby-identifier">error</span>(<span class="ruby-identifier">errorMessage</span>) -185: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 170</span> +170: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkCommand</span>(<span class="ruby-identifier">args</span>) +171: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">empty?</span> +172: <span class="ruby-identifier">errorMessage</span> = <span class="ruby-value str">'You must specify a command!'</span> +173: <span class="ruby-keyword kw">else</span> +174: <span class="ruby-identifier">errorMessage</span> = <span class="ruby-node">&quot;Unknown command #{args[0]}&quot;</span> +175: <span class="ruby-ivar">@commands</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">cmd</span><span class="ruby-operator">|</span> +176: <span class="ruby-comment cmt"># The first value of args is the command name.</span> +177: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cmd</span>[<span class="ruby-value">:label</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>] +178: <span class="ruby-comment cmt"># Find out how many arguments we need to have and if that's a</span> +179: <span class="ruby-comment cmt"># lower limit or a fixed value.</span> +180: <span class="ruby-identifier">minArgs</span> = <span class="ruby-value">0</span> +181: <span class="ruby-identifier">varArgs</span> = <span class="ruby-keyword kw">false</span> +182: <span class="ruby-identifier">cmd</span>[<span class="ruby-value">:args</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> +183: <span class="ruby-comment cmt"># Arguments starting with '+' must have 1 or more showings.</span> +184: <span class="ruby-comment cmt"># Arguments starting with '*' may show up 0 or more times.</span> +185: <span class="ruby-identifier">minArgs</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-value str">'!*'</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">arg</span>[<span class="ruby-value">0</span>]) +186: <span class="ruby-identifier">varArgs</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-value str">'!*+'</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">arg</span>[<span class="ruby-value">0</span>]) +187: <span class="ruby-keyword kw">end</span> +188: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">minArgs</span> +189: <span class="ruby-identifier">errorMessage</span> = <span class="ruby-node">&quot;Command #{args[0]} must have &quot;</span> <span class="ruby-operator">+</span> +190: <span class="ruby-node">&quot;#{varArgs ? 'at least ' : ''}#{minArgs} &quot;</span> <span class="ruby-operator">+</span> +191: <span class="ruby-value str">'arguments'</span> +192: <span class="ruby-keyword kw">end</span> +193: <span class="ruby-keyword kw">end</span> +194: <span class="ruby-keyword kw">end</span> +195: +196: <span class="ruby-identifier">error</span>(<span class="ruby-identifier">errorMessage</span>) +197: <span class="ruby-keyword kw">end</span></pre> </div> </div> @@ -997,108 +1010,64 @@ <div class="method-source-code" id="connect-aemon-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 187</span> -187: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connectDaemon</span> -188: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@authKey</span> -189: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">You must set an authentication key in the configuration file. Create a filenamed .taskjugglerrc or taskjuggler.rc that contains at least the followinglines. Replace 'your_secret_key' with some random character sequence._global: authKey: your_secret_key</span> -190: <span class="ruby-keyword kw">end</span> -191: -192: <span class="ruby-identifier">uri</span> = <span class="ruby-node">&quot;druby://#{@host}:#{@port}&quot;</span> -193: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@port</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> -194: <span class="ruby-comment cmt"># If the @port is configured to 0, we need to read the URI to connect</span> -195: <span class="ruby-comment cmt"># to the server from the .tj3d.uri file that has been generated by the</span> -196: <span class="ruby-comment cmt"># server.</span> -197: <span class="ruby-keyword kw">begin</span> -198: <span class="ruby-identifier">uri</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-ivar">@uriFile</span>).<span class="ruby-identifier">chomp</span> -199: <span class="ruby-keyword kw">rescue</span> -200: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'The server port is configured to be 0, but no '</span> <span class="ruby-operator">+</span> -201: <span class="ruby-node">&quot;.tj3d.uri file can be found: #{$!}&quot;</span>) -202: <span class="ruby-keyword kw">end</span> -203: <span class="ruby-keyword kw">end</span> -204: -205: <span class="ruby-comment cmt"># We try to play it safe here. The client also starts a DRb server, so</span> -206: <span class="ruby-comment cmt"># we need to make sure it's constricted to localhost only. We require</span> -207: <span class="ruby-comment cmt"># the DRb server for the standard IO redirection to work.</span> -208: <span class="ruby-identifier">$SAFE</span> = <span class="ruby-value">1</span> -209: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">install_acl</span>(<span class="ruby-constant">ACL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">] deny all -210: allow 127.0.0.1 ]</span>)) -211: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">start_service</span>(<span class="ruby-value str">'druby://127.0.0.1:0'</span>) -212: -213: <span class="ruby-keyword kw">begin</span> -214: <span class="ruby-comment cmt"># Get the ProjectBroker object from the tj3d.</span> -215: <span class="ruby-ivar">@broker</span> = <span class="ruby-constant">DRbObject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">uri</span>) -216: <span class="ruby-comment cmt"># Client and server should always come from the same Gem. Since we</span> -217: <span class="ruby-comment cmt"># restict communication to localhost, that's probably not a problem.</span> -218: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">check</span> = <span class="ruby-ivar">@broker</span>.<span class="ruby-identifier">apiVersion</span>(<span class="ruby-ivar">@authKey</span>, <span class="ruby-value">1</span>)) <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> -219: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'This client is too old for the server. Please '</span> <span class="ruby-operator">+</span> -220: <span class="ruby-value str">'upgrade to a more recent version of the software.'</span>) -221: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">check</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> -222: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'Authentication failed. Please check your authentication '</span> <span class="ruby-operator">+</span> -223: <span class="ruby-value str">'key to match the server key.'</span>) -224: <span class="ruby-keyword kw">end</span> -225: <span class="ruby-keyword kw">rescue</span> -226: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;TaskJuggler server on host '#{@host}' port &quot;</span> <span class="ruby-operator">+</span> -227: <span class="ruby-node">&quot;#{@port} is not responding&quot;</span>) -228: <span class="ruby-keyword kw">end</span> -229: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 199</span> +199: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connectDaemon</span> +200: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@authKey</span> +201: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">You must set an authentication key in the configuration file. Create a filenamed .taskjugglerrc or taskjuggler.rc that contains at least the followinglines. Replace 'your_secret_key' with some random character sequence._global: authKey: your_secret_key</span> +202: <span class="ruby-keyword kw">end</span> +203: +204: <span class="ruby-identifier">uri</span> = <span class="ruby-node">&quot;druby://#{@host}:#{@port}&quot;</span> +205: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@port</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> +206: <span class="ruby-comment cmt"># If the @port is configured to 0, we need to read the URI to connect</span> +207: <span class="ruby-comment cmt"># to the server from the .tj3d.uri file that has been generated by the</span> +208: <span class="ruby-comment cmt"># server.</span> +209: <span class="ruby-keyword kw">begin</span> +210: <span class="ruby-identifier">uri</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-ivar">@uriFile</span>).<span class="ruby-identifier">chomp</span> +211: <span class="ruby-keyword kw">rescue</span> +212: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'The server port is configured to be 0, but no '</span> <span class="ruby-operator">+</span> +213: <span class="ruby-node">&quot;.tj3d.uri file can be found: #{$!}&quot;</span>) +214: <span class="ruby-keyword kw">end</span> +215: <span class="ruby-keyword kw">end</span> +216: +217: <span class="ruby-comment cmt"># We try to play it safe here. The client also starts a DRb server, so</span> +218: <span class="ruby-comment cmt"># we need to make sure it's constricted to localhost only. We require</span> +219: <span class="ruby-comment cmt"># the DRb server for the standard IO redirection to work.</span> +220: <span class="ruby-identifier">$SAFE</span> = <span class="ruby-value">1</span> +221: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">install_acl</span>(<span class="ruby-constant">ACL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">] deny all +222: allow 127.0.0.1 ]</span>)) +223: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">start_service</span>(<span class="ruby-value str">'druby://127.0.0.1:0'</span>) +224: +225: <span class="ruby-keyword kw">begin</span> +226: <span class="ruby-comment cmt"># Get the ProjectBroker object from the tj3d.</span> +227: <span class="ruby-ivar">@broker</span> = <span class="ruby-constant">DRbObject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">uri</span>) +228: <span class="ruby-comment cmt"># Client and server should always come from the same Gem. Since we</span> +229: <span class="ruby-comment cmt"># restict communication to localhost, that's probably not a problem.</span> +230: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">check</span> = <span class="ruby-ivar">@broker</span>.<span class="ruby-identifier">apiVersion</span>(<span class="ruby-ivar">@authKey</span>, <span class="ruby-value">1</span>)) <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> +231: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'This client is too old for the server. Please '</span> <span class="ruby-operator">+</span> +232: <span class="ruby-value str">'upgrade to a more recent version of the software.'</span>) +233: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">check</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> +234: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'Authentication failed. Please check your authentication '</span> <span class="ruby-operator">+</span> +235: <span class="ruby-value str">'key to match the server key.'</span>) +236: <span class="ruby-keyword kw">end</span> +237: <span class="ruby-keyword kw">rescue</span> +238: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;TaskJuggler server on host '#{@host}' port &quot;</span> <span class="ruby-operator">+</span> +239: <span class="ruby-node">&quot;#{@port} is not responding&quot;</span>) +240: <span class="ruby-keyword kw">end</span> +241: <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> - <div id="connect-o-roject-erver-method" class="method-detail "> - <a name="method-i-connectToProjectServer"></a> - - <div class="method-heading"> - - <span class="method-name">connectToProjectServer</span><span - class="method-args">()</span> - <span class="method-click-advice">click to toggle source</span> - - </div> - - <div class="method-description"> - - - - - - <div class="method-source-code" - id="connect-o-roject-erver-source"> -<pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 353</span> -353: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connectToProjectServer</span> -354: <span class="ruby-ivar">@ps_uri</span>, <span class="ruby-ivar">@ps_authKey</span> = <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:addProject</span>, []) -355: <span class="ruby-keyword kw">begin</span> -356: <span class="ruby-ivar">@projectServer</span> = <span class="ruby-constant">DRbObject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@ps_uri</span>) -357: <span class="ruby-keyword kw">rescue</span> -358: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Can't get ProjectServer object: #{$!}&quot;</span>) -359: <span class="ruby-keyword kw">end</span> -360: <span class="ruby-keyword kw">begin</span> -361: <span class="ruby-ivar">@projectServer</span>.<span class="ruby-identifier">connect</span>(<span class="ruby-ivar">@ps_authKey</span>, <span class="ruby-identifier">$stdout</span>, <span class="ruby-identifier">$stderr</span>, <span class="ruby-identifier">$stdin</span>, <span class="ruby-ivar">@silent</span>) -362: <span class="ruby-keyword kw">rescue</span> -363: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Can't connect IO: #{$!}&quot;</span>) -364: <span class="ruby-keyword kw">end</span> -365: <span class="ruby-keyword kw">end</span></pre> - </div> - - </div> - - - - - </div> - - <div id="connect-o-eport-erver-method" class="method-detail "> <a name="method-i-connectToReportServer"></a> <div class="method-heading"> @@ -1115,29 +1084,29 @@ <div class="method-source-code" id="connect-o-eport-erver-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 375</span> -375: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">projectId</span>) -376: <span class="ruby-ivar">@ps_uri</span>, <span class="ruby-ivar">@ps_authKey</span> = <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:getProject</span>, <span class="ruby-identifier">projectId</span>) -377: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@ps_uri</span>.<span class="ruby-identifier">nil?</span> -378: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;No project with ID #{projectId} loaded&quot;</span>) -379: <span class="ruby-keyword kw">end</span> -380: <span class="ruby-keyword kw">begin</span> -381: <span class="ruby-ivar">@projectServer</span> = <span class="ruby-constant">DRbObject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@ps_uri</span>) -382: <span class="ruby-ivar">@rs_uri</span>, <span class="ruby-ivar">@rs_authKey</span> = <span class="ruby-ivar">@projectServer</span>.<span class="ruby-identifier">getReportServer</span>(<span class="ruby-ivar">@ps_authKey</span>) -383: <span class="ruby-ivar">@reportServer</span> = <span class="ruby-constant">DRbObject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@rs_uri</span>) -384: <span class="ruby-keyword kw">rescue</span> -385: <span class="ruby-identifier">error</span>(<span class="ruby-value str">&quot;Cannot get report server&quot;</span>) -386: <span class="ruby-keyword kw">end</span> -387: <span class="ruby-keyword kw">begin</span> -388: <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">connect</span>(<span class="ruby-ivar">@rs_authKey</span>, <span class="ruby-identifier">$stdout</span>, <span class="ruby-identifier">$stderr</span>, <span class="ruby-identifier">$stdin</span>, <span class="ruby-ivar">@silent</span>) -389: <span class="ruby-keyword kw">rescue</span> -390: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Can't connect IO: #{$!}&quot;</span>) -391: <span class="ruby-keyword kw">end</span> -392: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 358</span> +358: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">projectId</span>) +359: <span class="ruby-ivar">@ps_uri</span>, <span class="ruby-ivar">@ps_authKey</span> = <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:getProject</span>, <span class="ruby-identifier">projectId</span>) +360: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@ps_uri</span>.<span class="ruby-identifier">nil?</span> +361: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;No project with ID #{projectId} loaded&quot;</span>) +362: <span class="ruby-keyword kw">end</span> +363: <span class="ruby-keyword kw">begin</span> +364: <span class="ruby-ivar">@projectServer</span> = <span class="ruby-constant">DRbObject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@ps_uri</span>) +365: <span class="ruby-ivar">@rs_uri</span>, <span class="ruby-ivar">@rs_authKey</span> = <span class="ruby-ivar">@projectServer</span>.<span class="ruby-identifier">getReportServer</span>(<span class="ruby-ivar">@ps_authKey</span>) +366: <span class="ruby-ivar">@reportServer</span> = <span class="ruby-constant">DRbObject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@rs_uri</span>) +367: <span class="ruby-keyword kw">rescue</span> +368: <span class="ruby-identifier">error</span>(<span class="ruby-value str">&quot;Cannot get report server&quot;</span>) +369: <span class="ruby-keyword kw">end</span> +370: <span class="ruby-keyword kw">begin</span> +371: <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">connect</span>(<span class="ruby-ivar">@rs_authKey</span>, <span class="ruby-identifier">$stdout</span>, <span class="ruby-identifier">$stderr</span>, <span class="ruby-identifier">$stdin</span>, <span class="ruby-ivar">@silent</span>) +372: <span class="ruby-keyword kw">rescue</span> +373: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Can't connect IO: #{$!}&quot;</span>) +374: <span class="ruby-keyword kw">end</span> +375: <span class="ruby-keyword kw">end</span></pre> </div> </div> @@ -1164,64 +1133,26 @@ <div class="method-source-code" id="disconnect-aemon-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 238</span> -238: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnectDaemon</span> -239: <span class="ruby-ivar">@broker</span> = <span class="ruby-keyword kw">nil</span> -240: -241: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">stop_service</span> -242: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 250</span> +250: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnectDaemon</span> +251: <span class="ruby-ivar">@broker</span> = <span class="ruby-keyword kw">nil</span> +252: +253: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">stop_service</span> +254: <span class="ruby-keyword kw">end</span></pre> </div> </div> </div> - <div id="disconnect-roject-erver-method" class="method-detail "> - <a name="method-i-disconnectProjectServer"></a> - - <div class="method-heading"> - - <span class="method-name">disconnectProjectServer</span><span - class="method-args">()</span> - <span class="method-click-advice">click to toggle source</span> - - </div> - - <div class="method-description"> - - - - - - <div class="method-source-code" - id="disconnect-roject-erver-source"> -<pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 367</span> -367: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnectProjectServer</span> -368: <span class="ruby-keyword kw">begin</span> -369: <span class="ruby-ivar">@projectServer</span>.<span class="ruby-identifier">disconnect</span>(<span class="ruby-ivar">@ps_authKey</span>) -370: <span class="ruby-keyword kw">rescue</span> -371: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Can't disconnect IO: #{$!}&quot;</span>) -372: <span class="ruby-keyword kw">end</span> -373: <span class="ruby-keyword kw">end</span></pre> - </div> - - </div> - - - - - </div> - - <div id="disconnect-eport-erver-method" class="method-detail "> <a name="method-i-disconnectReportServer"></a> <div class="method-heading"> @@ -1238,29 +1169,29 @@ <div class="method-source-code" id="disconnect-eport-erver-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 394</span> -394: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnectReportServer</span> -395: <span class="ruby-keyword kw">begin</span> -396: <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">disconnect</span>(<span class="ruby-ivar">@rs_authKey</span>) -397: <span class="ruby-keyword kw">rescue</span> -398: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Can't disconnect IO: #{$!}&quot;</span>) -399: <span class="ruby-keyword kw">end</span> -400: <span class="ruby-keyword kw">begin</span> -401: <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">terminate</span>(<span class="ruby-ivar">@rs_authKey</span>) -402: <span class="ruby-keyword kw">rescue</span> -403: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Report server termination failed: #{$!}&quot;</span>) -404: <span class="ruby-keyword kw">end</span> -405: <span class="ruby-ivar">@reportServer</span> = <span class="ruby-keyword kw">nil</span> -406: <span class="ruby-ivar">@rs_uri</span> = <span class="ruby-keyword kw">nil</span> -407: <span class="ruby-ivar">@rs_authKey</span> = <span class="ruby-keyword kw">nil</span> -408: <span class="ruby-ivar">@projectServer</span> = <span class="ruby-keyword kw">nil</span> -409: <span class="ruby-ivar">@ps_uri</span> = <span class="ruby-keyword kw">nil</span> -410: <span class="ruby-ivar">@ps_authKey</span> = <span class="ruby-keyword kw">nil</span> -411: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 377</span> +377: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnectReportServer</span> +378: <span class="ruby-keyword kw">begin</span> +379: <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">disconnect</span>(<span class="ruby-ivar">@rs_authKey</span>) +380: <span class="ruby-keyword kw">rescue</span> +381: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Can't disconnect IO: #{$!}&quot;</span>) +382: <span class="ruby-keyword kw">end</span> +383: <span class="ruby-keyword kw">begin</span> +384: <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">terminate</span>(<span class="ruby-ivar">@rs_authKey</span>) +385: <span class="ruby-keyword kw">rescue</span> +386: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Report server termination failed: #{$!}&quot;</span>) +387: <span class="ruby-keyword kw">end</span> +388: <span class="ruby-ivar">@reportServer</span> = <span class="ruby-keyword kw">nil</span> +389: <span class="ruby-ivar">@rs_uri</span> = <span class="ruby-keyword kw">nil</span> +390: <span class="ruby-ivar">@rs_authKey</span> = <span class="ruby-keyword kw">nil</span> +391: <span class="ruby-ivar">@projectServer</span> = <span class="ruby-keyword kw">nil</span> +392: <span class="ruby-ivar">@ps_uri</span> = <span class="ruby-keyword kw">nil</span> +393: <span class="ruby-ivar">@ps_authKey</span> = <span class="ruby-keyword kw">nil</span> +394: <span class="ruby-keyword kw">end</span></pre> </div> </div> @@ -1287,15 +1218,15 @@ <div class="method-source-code" id="error-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 464</span> -464: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">message</span>) -465: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;ERROR: #{message}&quot;</span> -466: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> -467: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 447</span> +447: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">message</span>) +448: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;ERROR: #{message}&quot;</span> +449: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> +450: <span class="ruby-keyword kw">end</span></pre> </div> </div> @@ -1322,119 +1253,112 @@ <div class="method-source-code" id="execute-ommand-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 244</span> -244: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">executeCommand</span>(<span class="ruby-identifier">command</span>, <span class="ruby-identifier">args</span>) -245: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">command</span> -246: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'status'</span> -247: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:status</span>, []) -248: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'terminate'</span> -249: <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:stop</span>, []) -250: <span class="ruby-identifier">info</span>(<span class="ruby-value str">'Daemon terminated'</span>) -251: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'add'</span> -252: <span class="ruby-comment cmt"># Ask the daemon to create a new ProjectServer process and return a</span> -253: <span class="ruby-comment cmt"># DRbObject to access it.</span> -254: <span class="ruby-identifier">connectToProjectServer</span> -255: <span class="ruby-comment cmt"># Ask the server to load the files in _args_ into the ProjectServer.</span> -256: <span class="ruby-keyword kw">begin</span> -257: <span class="ruby-identifier">res</span> = <span class="ruby-ivar">@projectServer</span>.<span class="ruby-identifier">loadProject</span>(<span class="ruby-ivar">@ps_authKey</span>, [ <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">getwd</span>, *<span class="ruby-identifier">args</span> ]) -258: <span class="ruby-keyword kw">rescue</span> -259: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Loading of project failed: #{$!}&quot;</span>) -260: <span class="ruby-keyword kw">end</span> -261: <span class="ruby-identifier">disconnectProjectServer</span> -262: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span> <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-value">1</span> -263: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'remove'</span> -264: <span class="ruby-identifier">args</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> -265: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:removeProject</span>, <span class="ruby-identifier">arg</span>) -266: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Project '#{arg}' not found in list&quot;</span>) -267: <span class="ruby-keyword kw">end</span> -268: <span class="ruby-keyword kw">end</span> -269: <span class="ruby-identifier">info</span>(<span class="ruby-value str">'Project removed'</span>) -270: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'update'</span> -271: <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:update</span>, []) -272: <span class="ruby-identifier">info</span>(<span class="ruby-value str">'Reload requested'</span>) -273: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'report'</span> -274: <span class="ruby-comment cmt"># The first value of args is the project ID. The following values</span> -275: <span class="ruby-comment cmt"># could be either report IDs or TJI file # names ('.' or '*.tji').</span> -276: <span class="ruby-identifier">projectId</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> -277: <span class="ruby-comment cmt"># Ask the ProjectServer to launch a new ReportServer process and</span> -278: <span class="ruby-comment cmt"># provide a DRbObject reference to it.</span> -279: <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">projectId</span>) -280: -281: <span class="ruby-identifier">reportIds</span>, <span class="ruby-identifier">tjiFiles</span> = <span class="ruby-identifier">splitIdsAndFiles</span>(<span class="ruby-identifier">args</span>) -282: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reportIds</span>.<span class="ruby-identifier">empty?</span> -283: <span class="ruby-identifier">disconnectReportServer</span> -284: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'You must provide at least one report ID'</span>) -285: <span class="ruby-keyword kw">end</span> -286: <span class="ruby-comment cmt"># Send the provided .tji files to the ReportServer.</span> -287: <span class="ruby-identifier">failed</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">addFiles</span>(<span class="ruby-identifier">tjiFiles</span>) -288: <span class="ruby-comment cmt"># Ask the ReportServer to generate the reports with the provided IDs.</span> -289: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">failed</span> -290: <span class="ruby-identifier">reportIds</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">reportId</span><span class="ruby-operator">|</span> -291: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">generateReport</span>(<span class="ruby-ivar">@rs_authKey</span>, <span class="ruby-identifier">reportId</span>, -292: <span class="ruby-ivar">@regExpMode</span>, <span class="ruby-keyword kw">nil</span>) -293: <span class="ruby-identifier">failed</span> = <span class="ruby-keyword kw">true</span> -294: <span class="ruby-keyword kw">break</span> -295: <span class="ruby-keyword kw">end</span> -296: <span class="ruby-keyword kw">end</span> -297: <span class="ruby-keyword kw">end</span> -298: <span class="ruby-comment cmt"># Terminate the ReportServer</span> -299: <span class="ruby-identifier">disconnectReportServer</span> -300: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">failed</span> <span class="ruby-operator">?</span> <span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-value">0</span> -301: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'list-reports'</span> -302: <span class="ruby-comment cmt"># The first value of args is the project ID. The following values</span> -303: <span class="ruby-comment cmt"># could be either report IDs or TJI file # names ('.' or '*.tji').</span> -304: <span class="ruby-identifier">projectId</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> -305: <span class="ruby-comment cmt"># Ask the ProjectServer to launch a new ReportServer process and</span> -306: <span class="ruby-comment cmt"># provide a DRbObject reference to it.</span> -307: <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">projectId</span>) -308: -309: <span class="ruby-identifier">reportIds</span>, <span class="ruby-identifier">tjiFiles</span> = <span class="ruby-identifier">splitIdsAndFiles</span>(<span class="ruby-identifier">args</span>) -310: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reportIds</span>.<span class="ruby-identifier">empty?</span> -311: <span class="ruby-comment cmt"># If the user did not provide a report ID we generate a full list.</span> -312: <span class="ruby-identifier">reportIds</span> = [ <span class="ruby-value str">'.*'</span> ] -313: <span class="ruby-ivar">@regExpMode</span> = <span class="ruby-keyword kw">true</span> -314: <span class="ruby-keyword kw">end</span> -315: <span class="ruby-comment cmt"># Send the provided .tji files to the ReportServer.</span> -316: <span class="ruby-identifier">failed</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">addFiles</span>(<span class="ruby-identifier">tjiFiles</span>) -317: <span class="ruby-comment cmt"># Ask the ReportServer to generate the reports with the provided IDs.</span> -318: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">failed</span> -319: <span class="ruby-identifier">reportIds</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">reportId</span><span class="ruby-operator">|</span> -320: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">listReports</span>(<span class="ruby-ivar">@rs_authKey</span>, <span class="ruby-identifier">reportId</span>, <span class="ruby-ivar">@regExpMode</span>) -321: <span class="ruby-identifier">failed</span> = <span class="ruby-keyword kw">true</span> -322: <span class="ruby-keyword kw">break</span> -323: <span class="ruby-keyword kw">end</span> -324: <span class="ruby-keyword kw">end</span> -325: <span class="ruby-keyword kw">end</span> -326: <span class="ruby-comment cmt"># Terminate the ReportServer</span> -327: <span class="ruby-identifier">disconnectReportServer</span> -328: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">failed</span> <span class="ruby-operator">?</span> <span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-value">0</span> -329: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'check-ts'</span> -330: <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]) -331: <span class="ruby-keyword kw">begin</span> -332: <span class="ruby-identifier">res</span> = <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">checkTimeSheet</span>(<span class="ruby-ivar">@rs_authKey</span>, <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>]) -333: <span class="ruby-keyword kw">rescue</span> -334: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Time sheet check failed: #{$!}&quot;</span>) -335: <span class="ruby-keyword kw">end</span> -336: <span class="ruby-identifier">disconnectReportServer</span> -337: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span> <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-value">1</span> -338: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'check-ss'</span> -339: <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]) -340: <span class="ruby-keyword kw">begin</span> -341: <span class="ruby-identifier">res</span> = <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">checkStatusSheet</span>(<span class="ruby-ivar">@rs_authKey</span>, <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>]) -342: <span class="ruby-keyword kw">rescue</span> -343: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Status sheet check failed: #{$!}&quot;</span>) -344: <span class="ruby-keyword kw">end</span> -345: <span class="ruby-identifier">disconnectReportServer</span> -346: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span> <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-value">1</span> -347: <span class="ruby-keyword kw">else</span> -348: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown command #{command}&quot;</span> -349: <span class="ruby-keyword kw">end</span> -350: <span class="ruby-value">0</span> -351: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 256</span> +256: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">executeCommand</span>(<span class="ruby-identifier">command</span>, <span class="ruby-identifier">args</span>) +257: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">command</span> +258: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'status'</span> +259: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:status</span>, []) +260: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'terminate'</span> +261: <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:stop</span>, []) +262: <span class="ruby-identifier">info</span>(<span class="ruby-value str">'Daemon terminated'</span>) +263: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'add'</span> +264: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:addProject</span>, [ <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">getwd</span>, <span class="ruby-identifier">args</span>, +265: <span class="ruby-identifier">$stdout</span>, <span class="ruby-identifier">$stderr</span>, <span class="ruby-identifier">$stdin</span>, <span class="ruby-ivar">@silent</span> ]) +266: <span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Project(s) #{args.join(', ')} added&quot;</span>) +267: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span> <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-value">1</span> +268: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'remove'</span> +269: <span class="ruby-identifier">args</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> +270: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:removeProject</span>, <span class="ruby-identifier">arg</span>) +271: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Project '#{arg}' not found in list&quot;</span>) +272: <span class="ruby-keyword kw">end</span> +273: <span class="ruby-keyword kw">end</span> +274: <span class="ruby-identifier">info</span>(<span class="ruby-value str">'Project removed'</span>) +275: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'update'</span> +276: <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:update</span>, []) +277: <span class="ruby-identifier">info</span>(<span class="ruby-value str">'Reload requested'</span>) +278: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'report'</span> +279: <span class="ruby-comment cmt"># The first value of args is the project ID. The following values</span> +280: <span class="ruby-comment cmt"># could be either report IDs or TJI file # names ('.' or '*.tji').</span> +281: <span class="ruby-identifier">projectId</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> +282: <span class="ruby-comment cmt"># Ask the ProjectServer to launch a new ReportServer process and</span> +283: <span class="ruby-comment cmt"># provide a DRbObject reference to it.</span> +284: <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">projectId</span>) +285: +286: <span class="ruby-identifier">reportIds</span>, <span class="ruby-identifier">tjiFiles</span> = <span class="ruby-identifier">splitIdsAndFiles</span>(<span class="ruby-identifier">args</span>) +287: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reportIds</span>.<span class="ruby-identifier">empty?</span> +288: <span class="ruby-identifier">disconnectReportServer</span> +289: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'You must provide at least one report ID'</span>) +290: <span class="ruby-keyword kw">end</span> +291: <span class="ruby-comment cmt"># Send the provided .tji files to the ReportServer.</span> +292: <span class="ruby-identifier">failed</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">addFiles</span>(<span class="ruby-identifier">tjiFiles</span>) +293: <span class="ruby-comment cmt"># Ask the ReportServer to generate the reports with the provided IDs.</span> +294: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">failed</span> +295: <span class="ruby-identifier">reportIds</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">reportId</span><span class="ruby-operator">|</span> +296: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">generateReport</span>(<span class="ruby-ivar">@rs_authKey</span>, <span class="ruby-identifier">reportId</span>, +297: <span class="ruby-ivar">@regExpMode</span>, <span class="ruby-ivar">@formats</span>, <span class="ruby-keyword kw">nil</span>) +298: <span class="ruby-identifier">failed</span> = <span class="ruby-keyword kw">true</span> +299: <span class="ruby-keyword kw">break</span> +300: <span class="ruby-keyword kw">end</span> +301: <span class="ruby-keyword kw">end</span> +302: <span class="ruby-keyword kw">end</span> +303: <span class="ruby-comment cmt"># Terminate the ReportServer</span> +304: <span class="ruby-identifier">disconnectReportServer</span> +305: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">failed</span> <span class="ruby-operator">?</span> <span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-value">0</span> +306: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'list-reports'</span> +307: <span class="ruby-comment cmt"># The first value of args is the project ID. The following values</span> +308: <span class="ruby-comment cmt"># could be either report IDs or TJI file # names ('.' or '*.tji').</span> +309: <span class="ruby-identifier">projectId</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> +310: <span class="ruby-comment cmt"># Ask the ProjectServer to launch a new ReportServer process and</span> +311: <span class="ruby-comment cmt"># provide a DRbObject reference to it.</span> +312: <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">projectId</span>) +313: +314: <span class="ruby-identifier">reportIds</span>, <span class="ruby-identifier">tjiFiles</span> = <span class="ruby-identifier">splitIdsAndFiles</span>(<span class="ruby-identifier">args</span>) +315: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reportIds</span>.<span class="ruby-identifier">empty?</span> +316: <span class="ruby-comment cmt"># If the user did not provide a report ID we generate a full list.</span> +317: <span class="ruby-identifier">reportIds</span> = [ <span class="ruby-value str">'.*'</span> ] +318: <span class="ruby-ivar">@regExpMode</span> = <span class="ruby-keyword kw">true</span> +319: <span class="ruby-keyword kw">end</span> +320: <span class="ruby-comment cmt"># Send the provided .tji files to the ReportServer.</span> +321: <span class="ruby-identifier">failed</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">addFiles</span>(<span class="ruby-identifier">tjiFiles</span>) +322: <span class="ruby-comment cmt"># Ask the ReportServer to generate the reports with the provided IDs.</span> +323: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">failed</span> +324: <span class="ruby-identifier">reportIds</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">reportId</span><span class="ruby-operator">|</span> +325: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">listReports</span>(<span class="ruby-ivar">@rs_authKey</span>, <span class="ruby-identifier">reportId</span>, <span class="ruby-ivar">@regExpMode</span>) +326: <span class="ruby-identifier">failed</span> = <span class="ruby-keyword kw">true</span> +327: <span class="ruby-keyword kw">break</span> +328: <span class="ruby-keyword kw">end</span> +329: <span class="ruby-keyword kw">end</span> +330: <span class="ruby-keyword kw">end</span> +331: <span class="ruby-comment cmt"># Terminate the ReportServer</span> +332: <span class="ruby-identifier">disconnectReportServer</span> +333: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">failed</span> <span class="ruby-operator">?</span> <span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-value">0</span> +334: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'check-ts'</span> +335: <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]) +336: <span class="ruby-keyword kw">begin</span> +337: <span class="ruby-identifier">res</span> = <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">checkTimeSheet</span>(<span class="ruby-ivar">@rs_authKey</span>, <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>]) +338: <span class="ruby-keyword kw">rescue</span> +339: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Time sheet check failed: #{$!}&quot;</span>) +340: <span class="ruby-keyword kw">end</span> +341: <span class="ruby-identifier">disconnectReportServer</span> +342: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span> <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-value">1</span> +343: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'check-ss'</span> +344: <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]) +345: <span class="ruby-keyword kw">begin</span> +346: <span class="ruby-identifier">res</span> = <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">checkStatusSheet</span>(<span class="ruby-ivar">@rs_authKey</span>, <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>]) +347: <span class="ruby-keyword kw">rescue</span> +348: <span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Status sheet check failed: #{$!}&quot;</span>) +349: <span class="ruby-keyword kw">end</span> +350: <span class="ruby-identifier">disconnectReportServer</span> +351: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span> <span class="ruby-operator">?</span> <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-value">1</span> +352: <span class="ruby-keyword kw">else</span> +353: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown command #{command}&quot;</span> +354: <span class="ruby-keyword kw">end</span> +355: <span class="ruby-value">0</span> +356: <span class="ruby-keyword kw">end</span></pre> </div> </div> @@ -1461,15 +1385,15 @@ <div class="method-source-code" id="info-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 459</span> -459: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">info</span>(<span class="ruby-identifier">message</span>) -460: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@silent</span> -461: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{message}&quot;</span> -462: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 442</span> +442: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">info</span>(<span class="ruby-identifier">message</span>) +443: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@silent</span> +444: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{message}&quot;</span> +445: <span class="ruby-keyword kw">end</span></pre> </div> </div> @@ -1500,27 +1424,27 @@ <div class="method-source-code" id="split-ds-nd-iles-source"> <pre> - <span class="ruby-comment cmt"># File lib/tj3client.rb, line 427</span> -427: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">splitIdsAndFiles</span>(<span class="ruby-identifier">args</span>) -428: <span class="ruby-identifier">reportIds</span> = [] -429: <span class="ruby-identifier">tjiFiles</span> = [] -430: <span class="ruby-identifier">addToReports</span> = <span class="ruby-keyword kw">true</span> -431: <span class="ruby-identifier">args</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> -432: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'='</span> -433: <span class="ruby-comment cmt"># Switch to tji file list.</span> -434: <span class="ruby-identifier">addToReports</span> = <span class="ruby-keyword kw">false</span> -435: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">addToReports</span> -436: <span class="ruby-identifier">reportIds</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">arg</span> -437: <span class="ruby-keyword kw">else</span> -438: <span class="ruby-identifier">tjiFiles</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">arg</span> -439: <span class="ruby-keyword kw">end</span> -440: <span class="ruby-keyword kw">end</span> -441: -442: [ <span class="ruby-identifier">reportIds</span>, <span class="ruby-identifier">tjiFiles</span> ] -443: <span class="ruby-keyword kw">end</span></pre> + <span class="ruby-comment cmt"># File lib/tj3client.rb, line 410</span> +410: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">splitIdsAndFiles</span>(<span class="ruby-identifier">args</span>) +411: <span class="ruby-identifier">reportIds</span> = [] +412: <span class="ruby-identifier">tjiFiles</span> = [] +413: <span class="ruby-identifier">addToReports</span> = <span class="ruby-keyword kw">true</span> +414: <span class="ruby-identifier">args</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> +415: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'='</span> +416: <span class="ruby-comment cmt"># Switch to tji file list.</span> +417: <span class="ruby-identifier">addToReports</span> = <span class="ruby-keyword kw">false</span> +418: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">addToReports</span> +419: <span class="ruby-identifier">reportIds</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">arg</span> +420: <span class="ruby-keyword kw">else</span> +421: <span class="ruby-identifier">tjiFiles</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">arg</span> +422: <span class="ruby-keyword kw">end</span> +423: <span class="ruby-keyword kw">end</span> +424: +425: [ <span class="ruby-identifier">reportIds</span>, <span class="ruby-identifier">tjiFiles</span> ] +426: <span class="ruby-keyword kw">end</span></pre> </div> </div>