doc/TaskJuggler/Tj3Client.html in taskjuggler-0.0.6 vs doc/TaskJuggler/Tj3Client.html in taskjuggler-0.0.7
- old
+ new
@@ -191,10 +191,14 @@
<li><a href="../TaskJuggler/DependencyListAttribute.html">TaskJuggler::DependencyListAttribute</a></li>
<li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
+
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
+
<li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
<li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
<li><a href="../TaskJuggler/FloatAttribute.html">TaskJuggler::FloatAttribute</a></li>
@@ -263,12 +267,10 @@
<li><a href="../TaskJuggler/LogicalOperation.html">TaskJuggler::LogicalOperation</a></li>
<li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
-
<li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
<li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
<li><a href="../TaskJuggler/ManagerStatusRecord.html">TaskJuggler::ManagerStatusRecord</a></li>
@@ -329,10 +331,12 @@
<li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
<li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
+
<li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
<li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
<li><a href="../TaskJuggler/ReferenceAttribute.html">TaskJuggler::ReferenceAttribute</a></li>
@@ -375,12 +379,10 @@
<li><a href="../TaskJuggler/RichTextDocument.html">TaskJuggler::RichTextDocument</a></li>
<li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
-
<li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
<li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
<li><a href="../TaskJuggler/RichTextImage.html">TaskJuggler::RichTextImage</a></li>
@@ -417,10 +419,12 @@
<li><a href="../TaskJuggler/ShiftAssignmentsAttribute.html">TaskJuggler::ShiftAssignmentsAttribute</a></li>
<li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
+
<li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
<li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
<li><a href="../TaskJuggler/StatusSheetReceiver.html">TaskJuggler::StatusSheetReceiver</a></li>
@@ -527,10 +531,12 @@
<li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
<li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
+
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -622,57 +628,64 @@
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"># This must must be changed for the communication to work.</span>
-40: <span class="ruby-ivar">@authKey</span> = <span class="ruby-keyword kw">nil</span>
-41: <span class="ruby-comment cmt"># Determines whether report IDs are fix IDs or regular expressions that</span>
-42: <span class="ruby-comment cmt"># match a set of reports.</span>
-43: <span class="ruby-ivar">@regExpMode</span> = <span class="ruby-keyword kw">false</span>
-44:
-45: <span class="ruby-ivar">@mandatoryArgs</span> = <span class="ruby-value str">'<command> [arg1 arg2 ...]'</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-comment cmt"># This list describes the supported command line commands and their</span>
-48: <span class="ruby-comment cmt"># parameter.</span>
-49: <span class="ruby-comment cmt"># :label : The command name</span>
-50: <span class="ruby-comment cmt"># :args : A list of parameters. If the first character is a '+' the</span>
-51: <span class="ruby-comment cmt"># parameter must be provided 1 or more times. If the first character is</span>
-52: <span class="ruby-comment cmt"># a '*' the parameter must be provided 0 or more times. Repeatable and</span>
-53: <span class="ruby-comment cmt"># optional paramters must follow the mandatory ones.</span>
-54: <span class="ruby-comment cmt"># :descr : A short description of the command used for the help text.</span>
-55: <span class="ruby-ivar">@commands</span> = [
-56: { <span class="ruby-value">:label</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'status'</span>,
-57: <span class="ruby-value">:args</span> =<span class="ruby-operator">></span> [],
-58: <span class="ruby-value">:descr</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'Display the status of the available projects'</span> },
-59: { <span class="ruby-value">:label</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'terminate'</span>,
-60: <span class="ruby-value">:args</span> =<span class="ruby-operator">></span> [],
-61: <span class="ruby-value">:descr</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'Terminate the TaskJuggler daemon'</span> },
-62: { <span class="ruby-value">:label</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'add'</span>,
-63: <span class="ruby-value">:args</span> =<span class="ruby-operator">></span> [ <span class="ruby-value str">'tjp file'</span>, <span class="ruby-value str">'*tji file'</span>],
-64: <span class="ruby-value">:descr</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'Add a new project or update and existing one'</span> },
-65: { <span class="ruby-value">:label</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'remove'</span>,
-66: <span class="ruby-value">:args</span> =<span class="ruby-operator">></span> [ <span class="ruby-value str">'+project ID'</span> ],
-67: <span class="ruby-value">:descr</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'Remove the project with the specified ID from the daemon'</span> },
-68: { <span class="ruby-value">:label</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'report'</span>,
-69: <span class="ruby-value">:args</span> =<span class="ruby-operator">></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>],
-70: <span class="ruby-value">:descr</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'Generate the report with the provided ID for '</span> <span class="ruby-operator">+</span>
-71: <span class="ruby-value str">'the project with the given ID'</span>},
-72: { <span class="ruby-value">:label</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'list-reports'</span>,
-73: <span class="ruby-value">:args</span> =<span class="ruby-operator">></span> [ <span class="ruby-value str">'project ID'</span>, <span class="ruby-value str">'!report ID'</span> ],
-74: <span class="ruby-value">:descr</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'List all available reports of the project or those '</span> <span class="ruby-operator">+</span>
-75: <span class="ruby-value str">'that match the provided report ID'</span> },
-76: { <span class="ruby-value">:label</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'check-ts'</span>,
-77: <span class="ruby-value">:args</span> =<span class="ruby-operator">></span> [ <span class="ruby-value str">'project ID'</span>, <span class="ruby-value str">'time sheet'</span> ],
-78: <span class="ruby-value">:descr</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'Check the provided time sheet for correctness'</span> <span class="ruby-operator">+</span>
-79: <span class="ruby-value str">'against the project with the given ID'</span>},
-80: { <span class="ruby-value">:label</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'check-ss'</span>,
-81: <span class="ruby-value">:args</span> =<span class="ruby-operator">></span> [ <span class="ruby-value str">'project ID'</span>, <span class="ruby-value str">'status sheet'</span> ],
-82: <span class="ruby-value">:descr</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'Check the provided status sheet for correctness '</span> <span class="ruby-operator">+</span>
-83: <span class="ruby-value str">'against the project with the given ID'</span>}
-84: ]
-85: <span class="ruby-keyword kw">end</span></pre>
+47: <span class="ruby-ivar">@mandatoryArgs</span> = <span class="ruby-value str">'<command> [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">></span> <span class="ruby-value str">'status'</span>,
+59: <span class="ruby-value">:args</span> =<span class="ruby-operator">></span> [],
+60: <span class="ruby-value">:descr</span> =<span class="ruby-operator">></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">></span> <span class="ruby-value str">'terminate'</span>,
+62: <span class="ruby-value">:args</span> =<span class="ruby-operator">></span> [],
+63: <span class="ruby-value">:descr</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'Terminate the TaskJuggler daemon'</span> },
+64: { <span class="ruby-value">:label</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'add'</span>,
+65: <span class="ruby-value">:args</span> =<span class="ruby-operator">></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">></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">></span> <span class="ruby-value str">'update'</span>,
+68: <span class="ruby-value">:args</span> =<span class="ruby-operator">></span> [],
+69: <span class="ruby-value">:descr</span> =<span class="ruby-operator">></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">></span> <span class="ruby-value str">'remove'</span>,
+72: <span class="ruby-value">:args</span> =<span class="ruby-operator">></span> [ <span class="ruby-value str">'+project ID'</span> ],
+73: <span class="ruby-value">:descr</span> =<span class="ruby-operator">></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">></span> <span class="ruby-value str">'report'</span>,
+76: <span class="ruby-value">:args</span> =<span class="ruby-operator">></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">></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">></span> <span class="ruby-value str">'list-reports'</span>,
+80: <span class="ruby-value">:args</span> =<span class="ruby-operator">></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">></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">></span> <span class="ruby-value str">'check-ts'</span>,
+84: <span class="ruby-value">:args</span> =<span class="ruby-operator">></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">></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">></span> <span class="ruby-value str">'check-ss'</span>,
+88: <span class="ruby-value">:args</span> =<span class="ruby-operator">></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">></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>
</div>
</div>
@@ -705,25 +718,25 @@
<div class="method-source-code"
id="main-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 129</span>
-129: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
-130: <span class="ruby-identifier">args</span> = <span class="ruby-keyword kw">super</span>
-131: <span class="ruby-comment cmt"># Run a first check of the non-option command line arguments.</span>
-132: <span class="ruby-identifier">checkCommand</span>(<span class="ruby-identifier">args</span>)
-133: <span class="ruby-comment cmt"># Read some configuration variables. Except for the authKey, they are</span>
-134: <span class="ruby-comment cmt"># all optional.</span>
-135: <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>)
-136:
-137: <span class="ruby-identifier">connectDaemon</span>
-138: <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>])
-139: <span class="ruby-identifier">disconnectDaemon</span>
-140:
-141: <span class="ruby-identifier">retVal</span>
-142: <span class="ruby-keyword kw">end</span></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>
</div>
</div>
@@ -750,46 +763,51 @@
<div class="method-source-code"
id="process-rguments-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 87</span>
- 87: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>)
- 88: <span class="ruby-keyword kw">super</span> <span class="ruby-keyword kw">do</span>
- 89: <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>
- 90:
- 91: <span class="ruby-comment cmt"># Convert the command list into a help text.</span>
- 92: <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>
- 93: <span class="ruby-identifier">tail</span> = <span class="ruby-value str">''</span>
- 94: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">cmd</span>[<span class="ruby-value">:args</span>].<span class="ruby-identifier">dup</span>
- 95: <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>
- 96: <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>
- 97: <span class="ruby-node">"[<#{c[1..-1]}> ...]"</span>
- 98: <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>
- 99: <span class="ruby-node">"<#{c[1..-1]}> [<#{c[1..-1]}> ...]"</span>
-100: <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>
-101: <span class="ruby-identifier">tail</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">']'</span>
-102: <span class="ruby-node">"[#{c[1..-1]} "</span>
-103: <span class="ruby-keyword kw">else</span>
-104: <span class="ruby-node">"<#{c}>"</span>
-105: <span class="ruby-keyword kw">end</span>
-106: <span class="ruby-keyword kw">end</span>
-107: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">' '</span>)
-108: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">banner</span> <span class="ruby-operator">+=</span> <span class="ruby-node">" #{cmd[:label] + ' ' + args + tail}"</span> <span class="ruby-operator">+</span>
-109: <span class="ruby-node">"\n\n#{' ' * 10 + format(cmd[:descr], 10)}\n"</span>
-110: <span class="ruby-keyword kw">end</span>
-111: <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 <NUMBER>'</span>, <span class="ruby-constant">Integer</span>,
-112: <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>
-113: <span class="ruby-ivar">@port</span> = <span class="ruby-identifier">arg</span>
-114: <span class="ruby-keyword kw">end</span>
-115: <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>,
-116: <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>
-117: <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>
-118: <span class="ruby-ivar">@regExpMode</span> = <span class="ruby-keyword kw">true</span>
-119: <span class="ruby-keyword kw">end</span>
-120: <span class="ruby-keyword kw">end</span>
-121: <span class="ruby-keyword kw">end</span></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">"[<#{c[1..-1]}> ...]"</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">"<#{c[1..-1]}> [<#{c[1..-1]}> ...]"</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">"[#{c[1..-1]} "</span>
+110: <span class="ruby-keyword kw">else</span>
+111: <span class="ruby-node">"<#{c}>"</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">" #{cmd[:label] + ' ' + args + tail}"</span> <span class="ruby-operator">+</span>
+116: <span class="ruby-node">"\n\n#{' ' * 10 + format(cmd[:descr], 10)}\n"</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 <NUMBER>'</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>
</div>
</div>
@@ -824,23 +842,23 @@
<div class="method-source-code"
id="add-iles-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 418</span>
-418: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addFiles</span>(<span class="ruby-identifier">tjiFiles</span>)
-419: <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>
-420: <span class="ruby-keyword kw">begin</span>
-421: <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>)
-422: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
-423: <span class="ruby-keyword kw">end</span>
-424: <span class="ruby-keyword kw">rescue</span>
-425: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Cannot add file #{file} to ReportServer"</span>)
-426: <span class="ruby-keyword kw">end</span>
-427: <span class="ruby-keyword kw">end</span>
-428: <span class="ruby-keyword kw">true</span>
-429: <span class="ruby-keyword kw">end</span></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">"Cannot add file #{file} to ReportServer"</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>
</div>
</div>
@@ -871,19 +889,19 @@
<div class="method-source-code"
id="call-aemon-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 387</span>
-387: <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>)
-388: <span class="ruby-keyword kw">begin</span>
-389: <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>)
-390: <span class="ruby-keyword kw">rescue</span>
-391: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Call to TaskJuggler server on host '#{@host}' "</span> <span class="ruby-operator">+</span>
-392: <span class="ruby-node">"port #{@port} failed: #{$!}"</span>)
-393: <span class="ruby-keyword kw">end</span>
-394: <span class="ruby-keyword kw">end</span></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">"Call to TaskJuggler server on host '#{@host}' "</span> <span class="ruby-operator">+</span>
+420: <span class="ruby-node">"port #{@port} failed: #{$!}"</span>)
+421: <span class="ruby-keyword kw">end</span>
+422: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -910,39 +928,39 @@
<div class="method-source-code"
id="check-ommand-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 146</span>
-146: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkCommand</span>(<span class="ruby-identifier">args</span>)
-147: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">empty?</span>
-148: <span class="ruby-identifier">errorMessage</span> = <span class="ruby-value str">'You must specify a command!'</span>
-149: <span class="ruby-keyword kw">else</span>
-150: <span class="ruby-identifier">errorMessage</span> = <span class="ruby-node">"Unknown command #{args[0]}"</span>
-151: <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>
-152: <span class="ruby-comment cmt"># The first value of args is the command name.</span>
-153: <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>]
-154: <span class="ruby-comment cmt"># Find out how many arguments we need to have and if that's a</span>
-155: <span class="ruby-comment cmt"># lower limit or a fixed value.</span>
-156: <span class="ruby-identifier">minArgs</span> = <span class="ruby-value">0</span>
-157: <span class="ruby-identifier">varArgs</span> = <span class="ruby-keyword kw">false</span>
-158: <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>
-159: <span class="ruby-comment cmt"># Arguments starting with '+' must have 1 or more showings.</span>
-160: <span class="ruby-comment cmt"># Arguments starting with '*' may show up 0 or more times.</span>
-161: <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>])
-162: <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>])
-163: <span class="ruby-keyword kw">end</span>
-164: <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">>=</span> <span class="ruby-identifier">minArgs</span>
-165: <span class="ruby-identifier">errorMessage</span> = <span class="ruby-node">"Command #{args[0]} must have "</span> <span class="ruby-operator">+</span>
-166: <span class="ruby-node">"#{varArgs ? 'at least ' : ''}#{minArgs} "</span> <span class="ruby-operator">+</span>
-167: <span class="ruby-value str">'arguments'</span>
-168: <span class="ruby-keyword kw">end</span>
-169: <span class="ruby-keyword kw">end</span>
-170: <span class="ruby-keyword kw">end</span>
-171:
-172: <span class="ruby-identifier">error</span>(<span class="ruby-identifier">errorMessage</span>)
-173: <span class="ruby-keyword kw">end</span></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">"Unknown command #{args[0]}"</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">>=</span> <span class="ruby-identifier">minArgs</span>
+177: <span class="ruby-identifier">errorMessage</span> = <span class="ruby-node">"Command #{args[0]} must have "</span> <span class="ruby-operator">+</span>
+178: <span class="ruby-node">"#{varArgs ? 'at least ' : ''}#{minArgs} "</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>
</div>
</div>
@@ -969,41 +987,54 @@
<div class="method-source-code"
id="connect-aemon-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 175</span>
-175: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connectDaemon</span>
-176: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@authKey</span>
-177: <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>
-178: <span class="ruby-keyword kw">end</span>
-179:
-180: <span class="ruby-comment cmt"># We try to play it safe here. The client also starts a DRb server, so</span>
-181: <span class="ruby-comment cmt"># we need to make sure it's constricted to localhost only. We require</span>
-182: <span class="ruby-comment cmt"># the DRb server for the standard IO redirection to work.</span>
-183: <span class="ruby-identifier">$SAFE</span> = <span class="ruby-value">1</span>
-184: <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
-185: allow 127.0.0.1 ]</span>))
-186: <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>)
-187:
-188: <span class="ruby-keyword kw">begin</span>
-189: <span class="ruby-comment cmt"># Get the ProjectBroker object from the tj3d.</span>
-190: <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-node">"druby://#{@host}:#{@port}"</span>)
-191: <span class="ruby-comment cmt"># Client and server should always come from the same Gem. Since we</span>
-192: <span class="ruby-comment cmt"># restict communication to localhost, that's probably not a problem.</span>
-193: <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"><</span> <span class="ruby-value">0</span>
-194: <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>
-195: <span class="ruby-value str">'upgrade to a more recent version of the software.'</span>)
-196: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">check</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
-197: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'Authentication failed. Please check your authentication '</span> <span class="ruby-operator">+</span>
-198: <span class="ruby-value str">'key to match the server key.'</span>)
-199: <span class="ruby-keyword kw">end</span>
-200: <span class="ruby-keyword kw">rescue</span>
-201: <span class="ruby-identifier">error</span>(<span class="ruby-node">"TaskJuggler server on host '#{@host}' port "</span> <span class="ruby-operator">+</span>
-202: <span class="ruby-node">"#{@port} is not responding"</span>)
+ <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">"druby://#{@host}:#{@port}"</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">".tj3d.uri file can be found: #{$!}"</span>)
+202: <span class="ruby-keyword kw">end</span>
203: <span class="ruby-keyword kw">end</span>
-204: <span class="ruby-keyword kw">end</span></pre>
+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"><</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">"TaskJuggler server on host '#{@host}' port "</span> <span class="ruby-operator">+</span>
+227: <span class="ruby-node">"#{@port} is not responding"</span>)
+228: <span class="ruby-keyword kw">end</span>
+229: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1030,24 +1061,24 @@
<div class="method-source-code"
id="connect-o-roject-erver-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 325</span>
-325: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connectToProjectServer</span>
-326: <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>, [])
-327: <span class="ruby-keyword kw">begin</span>
-328: <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>)
-329: <span class="ruby-keyword kw">rescue</span>
-330: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Can't get ProjectServer object: #{$!}"</span>)
-331: <span class="ruby-keyword kw">end</span>
-332: <span class="ruby-keyword kw">begin</span>
-333: <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>)
-334: <span class="ruby-keyword kw">rescue</span>
-335: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Can't connect IO: #{$!}"</span>)
-336: <span class="ruby-keyword kw">end</span>
-337: <span class="ruby-keyword kw">end</span></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">"Can't get ProjectServer object: #{$!}"</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">"Can't connect IO: #{$!}"</span>)
+364: <span class="ruby-keyword kw">end</span>
+365: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1074,29 +1105,29 @@
<div class="method-source-code"
id="connect-o-eport-erver-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 347</span>
-347: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">projectId</span>)
-348: <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>)
-349: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@ps_uri</span>.<span class="ruby-identifier">nil?</span>
-350: <span class="ruby-identifier">error</span>(<span class="ruby-node">"No project with ID #{projectId} loaded"</span>)
-351: <span class="ruby-keyword kw">end</span>
-352: <span class="ruby-keyword kw">begin</span>
-353: <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>)
-354: <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>)
-355: <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>)
-356: <span class="ruby-keyword kw">rescue</span>
-357: <span class="ruby-identifier">error</span>(<span class="ruby-value str">"Cannot get report server"</span>)
-358: <span class="ruby-keyword kw">end</span>
-359: <span class="ruby-keyword kw">begin</span>
-360: <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>)
-361: <span class="ruby-keyword kw">rescue</span>
-362: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Can't connect IO: #{$!}"</span>)
-363: <span class="ruby-keyword kw">end</span>
-364: <span class="ruby-keyword kw">end</span></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">"No project with ID #{projectId} loaded"</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">"Cannot get report server"</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">"Can't connect IO: #{$!}"</span>)
+391: <span class="ruby-keyword kw">end</span>
+392: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1123,16 +1154,16 @@
<div class="method-source-code"
id="disconnect-aemon-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 213</span>
-213: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnectDaemon</span>
-214: <span class="ruby-ivar">@broker</span> = <span class="ruby-keyword kw">nil</span>
-215:
-216: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">stop_service</span>
-217: <span class="ruby-keyword kw">end</span></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>
</div>
</div>
@@ -1159,18 +1190,18 @@
<div class="method-source-code"
id="disconnect-roject-erver-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 339</span>
-339: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnectProjectServer</span>
-340: <span class="ruby-keyword kw">begin</span>
-341: <span class="ruby-ivar">@projectServer</span>.<span class="ruby-identifier">disconnect</span>(<span class="ruby-ivar">@ps_authKey</span>)
-342: <span class="ruby-keyword kw">rescue</span>
-343: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Can't disconnect IO: #{$!}"</span>)
-344: <span class="ruby-keyword kw">end</span>
-345: <span class="ruby-keyword kw">end</span></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">"Can't disconnect IO: #{$!}"</span>)
+372: <span class="ruby-keyword kw">end</span>
+373: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1197,29 +1228,29 @@
<div class="method-source-code"
id="disconnect-eport-erver-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 366</span>
-366: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnectReportServer</span>
-367: <span class="ruby-keyword kw">begin</span>
-368: <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">disconnect</span>(<span class="ruby-ivar">@rs_authKey</span>)
-369: <span class="ruby-keyword kw">rescue</span>
-370: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Can't disconnect IO: #{$!}"</span>)
-371: <span class="ruby-keyword kw">end</span>
-372: <span class="ruby-keyword kw">begin</span>
-373: <span class="ruby-ivar">@reportServer</span>.<span class="ruby-identifier">terminate</span>(<span class="ruby-ivar">@rs_authKey</span>)
-374: <span class="ruby-keyword kw">rescue</span>
-375: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Report server termination failed: #{$!}"</span>)
-376: <span class="ruby-keyword kw">end</span>
-377: <span class="ruby-ivar">@reportServer</span> = <span class="ruby-keyword kw">nil</span>
-378: <span class="ruby-ivar">@rs_uri</span> = <span class="ruby-keyword kw">nil</span>
-379: <span class="ruby-ivar">@rs_authKey</span> = <span class="ruby-keyword kw">nil</span>
-380: <span class="ruby-ivar">@projectServer</span> = <span class="ruby-keyword kw">nil</span>
-381: <span class="ruby-ivar">@ps_uri</span> = <span class="ruby-keyword kw">nil</span>
-382: <span class="ruby-ivar">@ps_authKey</span> = <span class="ruby-keyword kw">nil</span>
-383: <span class="ruby-keyword kw">end</span></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">"Can't disconnect IO: #{$!}"</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">"Report server termination failed: #{$!}"</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>
</div>
</div>
@@ -1246,15 +1277,15 @@
<div class="method-source-code"
id="error-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 436</span>
-436: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">message</span>)
-437: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"ERROR: #{message}"</span>
-438: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
-439: <span class="ruby-keyword kw">end</span></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">"ERROR: #{message}"</span>
+466: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
+467: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1281,116 +1312,119 @@
<div class="method-source-code"
id="execute-ommand-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 219</span>
-219: <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>)
-220: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">command</span>
-221: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'status'</span>
-222: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:status</span>, [])
-223: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'terminate'</span>
-224: <span class="ruby-identifier">callDaemon</span>(<span class="ruby-value">:stop</span>, [])
-225: <span class="ruby-identifier">info</span>(<span class="ruby-value str">'Daemon terminated'</span>)
-226: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'add'</span>
-227: <span class="ruby-comment cmt"># Ask the daemon to create a new ProjectServer process and return a</span>
-228: <span class="ruby-comment cmt"># DRbObject to access it.</span>
-229: <span class="ruby-identifier">connectToProjectServer</span>
-230: <span class="ruby-comment cmt"># Ask the server to load the files in _args_ into the ProjectServer.</span>
-231: <span class="ruby-keyword kw">begin</span>
-232: <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> ])
-233: <span class="ruby-keyword kw">rescue</span>
-234: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Loading of project failed: #{$!}"</span>)
-235: <span class="ruby-keyword kw">end</span>
-236: <span class="ruby-identifier">disconnectProjectServer</span>
-237: <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>
-238: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'remove'</span>
-239: <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>
-240: <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>)
-241: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Project '#{arg}' not found in list"</span>)
-242: <span class="ruby-keyword kw">end</span>
-243: <span class="ruby-keyword kw">end</span>
-244: <span class="ruby-identifier">info</span>(<span class="ruby-value str">'Project removed'</span>)
-245: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'report'</span>
-246: <span class="ruby-comment cmt"># The first value of args is the project ID. The following values</span>
-247: <span class="ruby-comment cmt"># could be either report IDs or TJI file # names ('.' or '*.tji').</span>
-248: <span class="ruby-identifier">projectId</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span>
-249: <span class="ruby-comment cmt"># Ask the ProjectServer to launch a new ReportServer process and</span>
-250: <span class="ruby-comment cmt"># provide a DRbObject reference to it.</span>
-251: <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">projectId</span>)
-252:
-253: <span class="ruby-identifier">reportIds</span>, <span class="ruby-identifier">tjiFiles</span> = <span class="ruby-identifier">splitIdsAndFiles</span>(<span class="ruby-identifier">args</span>)
-254: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reportIds</span>.<span class="ruby-identifier">empty?</span>
-255: <span class="ruby-identifier">disconnectReportServer</span>
-256: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'You must provide at least one report ID'</span>)
-257: <span class="ruby-keyword kw">end</span>
-258: <span class="ruby-comment cmt"># Send the provided .tji files to the ReportServer.</span>
-259: <span class="ruby-identifier">failed</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">addFiles</span>(<span class="ruby-identifier">tjiFiles</span>)
-260: <span class="ruby-comment cmt"># Ask the ReportServer to generate the reports with the provided IDs.</span>
-261: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">failed</span>
-262: <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>
-263: <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>,
-264: <span class="ruby-ivar">@regExpMode</span>, <span class="ruby-keyword kw">nil</span>)
-265: <span class="ruby-identifier">failed</span> = <span class="ruby-keyword kw">true</span>
-266: <span class="ruby-keyword kw">break</span>
-267: <span class="ruby-keyword kw">end</span>
-268: <span class="ruby-keyword kw">end</span>
-269: <span class="ruby-keyword kw">end</span>
-270: <span class="ruby-comment cmt"># Terminate the ReportServer</span>
-271: <span class="ruby-identifier">disconnectReportServer</span>
-272: <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>
-273: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'list-reports'</span>
+ <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">"Loading of project failed: #{$!}"</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">"Project '#{arg}' not found in list"</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-comment cmt"># If the user did not provide a report ID we generate a full list.</span>
-284: <span class="ruby-identifier">reportIds</span> = [ <span class="ruby-value str">'.*'</span> ]
-285: <span class="ruby-ivar">@regExpMode</span> = <span class="ruby-keyword kw">true</span>
-286: <span class="ruby-keyword kw">end</span>
-287: <span class="ruby-comment cmt"># Send the provided .tji files to the ReportServer.</span>
-288: <span class="ruby-identifier">failed</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">addFiles</span>(<span class="ruby-identifier">tjiFiles</span>)
-289: <span class="ruby-comment cmt"># Ask the ReportServer to generate the reports with the provided IDs.</span>
-290: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">failed</span>
-291: <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>
-292: <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>)
+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">'check-ts'</span>
-302: <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>])
-303: <span class="ruby-keyword kw">begin</span>
-304: <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>])
-305: <span class="ruby-keyword kw">rescue</span>
-306: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Time sheet check failed: #{$!}"</span>)
-307: <span class="ruby-keyword kw">end</span>
-308: <span class="ruby-identifier">disconnectReportServer</span>
-309: <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>
-310: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'check-ss'</span>
-311: <span class="ruby-identifier">connectToReportServer</span>(<span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>])
-312: <span class="ruby-keyword kw">begin</span>
-313: <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>])
-314: <span class="ruby-keyword kw">rescue</span>
-315: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Status sheet check failed: #{$!}"</span>)
-316: <span class="ruby-keyword kw">end</span>
-317: <span class="ruby-identifier">disconnectReportServer</span>
-318: <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>
-319: <span class="ruby-keyword kw">else</span>
-320: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Unknown command #{command}"</span>
-321: <span class="ruby-keyword kw">end</span>
-322: <span class="ruby-value">0</span>
-323: <span class="ruby-keyword kw">end</span></pre>
+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">"Time sheet check failed: #{$!}"</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">"Status sheet check failed: #{$!}"</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">"Unknown command #{command}"</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>
</div>
</div>
@@ -1417,15 +1451,15 @@
<div class="method-source-code"
id="info-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 431</span>
-431: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">info</span>(<span class="ruby-identifier">message</span>)
-432: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@silent</span>
-433: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"#{message}"</span>
-434: <span class="ruby-keyword kw">end</span></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">"#{message}"</span>
+462: <span class="ruby-keyword kw">end</span></pre>
</div>
</div>
@@ -1456,27 +1490,27 @@
<div class="method-source-code"
id="split-ds-nd-iles-source">
<pre>
- <span class="ruby-comment cmt"># File lib/tj3client.rb, line 399</span>
-399: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">splitIdsAndFiles</span>(<span class="ruby-identifier">args</span>)
-400: <span class="ruby-identifier">reportIds</span> = []
-401: <span class="ruby-identifier">tjiFiles</span> = []
-402: <span class="ruby-identifier">addToReports</span> = <span class="ruby-keyword kw">true</span>
-403: <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>
-404: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'='</span>
-405: <span class="ruby-comment cmt"># Switch to tji file list.</span>
-406: <span class="ruby-identifier">addToReports</span> = <span class="ruby-keyword kw">false</span>
-407: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">addToReports</span>
-408: <span class="ruby-identifier">reportIds</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">arg</span>
-409: <span class="ruby-keyword kw">else</span>
-410: <span class="ruby-identifier">tjiFiles</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">arg</span>
-411: <span class="ruby-keyword kw">end</span>
-412: <span class="ruby-keyword kw">end</span>
-413:
-414: [ <span class="ruby-identifier">reportIds</span>, <span class="ruby-identifier">tjiFiles</span> ]
-415: <span class="ruby-keyword kw">end</span></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"><<</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"><<</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>
</div>
</div>