<!DOCTYPE html> <html> <head> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> <title>class Installer - RDoc Documentation</title> <link type="text/css" media="screen" href="./rdoc.css" rel="stylesheet"> <script type="text/javascript"> var rdoc_rel_prefix = "./"; </script> <script type="text/javascript" charset="utf-8" src="./js/jquery.js"></script> <script type="text/javascript" charset="utf-8" src="./js/navigation.js"></script> <script type="text/javascript" charset="utf-8" src="./js/search_index.js"></script> <script type="text/javascript" charset="utf-8" src="./js/search.js"></script> <script type="text/javascript" charset="utf-8" src="./js/searcher.js"></script> <script type="text/javascript" charset="utf-8" src="./js/darkfish.js"></script> <body id="top" class="class"> <nav id="metadata"> <nav id="home-section" class="section"> <h3 class="section-header"> <a href="./index.html">Home</a> <a href="./table_of_contents.html#classes">Classes</a> <a href="./table_of_contents.html#methods">Methods</a> </h3> </nav> <nav id="search-section" class="section project-section" class="initially-hidden"> <form action="#" method="get" accept-charset="utf-8"> <h3 class="section-header"> <input type="text" name="search" placeholder="Search" id="search-field" title="Type to search, Up and Down to navigate, Enter to load"> </h3> </form> <ul id="search-results" class="initially-hidden"></ul> </nav> <div id="file-metadata"> <nav id="file-list-section" class="section"> <h3 class="section-header">Defined In</h3> <ul> <li>install.rb </ul> </nav> </div> <div id="class-metadata"> <nav id="parent-class-section" class="section"> <h3 class="section-header">Parent</h3> <p class="link">Object </nav> <!-- Included Modules --> <nav id="includes-section" class="section"> <h3 class="section-header">Included Modules</h3> <ul class="link-list"> <li><span class="include">FileUtils</span> </ul> </nav> <!-- Method Quickref --> <nav id="method-list-section" class="section"> <h3 class="section-header">Methods</h3> <ul class="link-list"> <li><a href="#method-i-build">#build</a> <li><a href="#method-i-config">#config</a> <li><a href="#method-i-fetch">#fetch</a> <li><a href="#method-i-fetch_spec">#fetch_spec</a> <li><a href="#method-i-find_ruby_version">#find_ruby_version</a> <li><a href="#method-i-guess_cpu">#guess_cpu</a> <li><a href="#method-i-guess_platform">#guess_platform</a> <li><a href="#method-i-guess_version">#guess_version</a> <li><a href="#method-i-install">#install</a> <li><a href="#method-i-install_fail">#install_fail</a> <li><a href="#method-i-latest_version">#latest_version</a> <li><a href="#method-i-make">#make</a> <li><a href="#method-i-parse_command_line">#parse_command_line</a> <li><a href="#method-i-platform_fail">#platform_fail</a> <li><a href="#method-i-platforms">#platforms</a> <li><a href="#method-i-raw_install_to_gem_install">#raw_install_to_gem_install</a> <li><a href="#method-i-remote_files_matching">#remote_files_matching</a> <li><a href="#method-i-ruby">#ruby</a> <li><a href="#method-i-run">#run</a> <li><a href="#method-i-sys">#sys</a> <li><a href="#method-i-uninstall">#uninstall</a> <li><a href="#method-i-unpack">#unpack</a> <li><a href="#method-i-verify_install">#verify_install</a> <li><a href="#method-i-versions">#versions</a> <li><a href="#method-i-windows_install">#windows_install</a> </ul> </nav> </div> <div id="project-metadata"> <nav id="classindex-section" class="section project-section"> <h3 class="section-header">Class and Module Index</h3> <ul class="link-list"> <li><a href="./LazyStruct.html">LazyStruct</a> <li><a href="./LazyStruct/Mixin.html">LazyStruct::Mixin</a> <li><a href="./Installer.html">Installer</a> <li><a href="./Kernel.html">Kernel</a> </ul> </nav> </div> </nav> <div id="documentation"> <h1 class="class">class Installer</h1> <div id="description" class="description"> </div><!-- description --> <section id="5Buntitled-5D" class="documentation-section"> <!-- Constants --> <section id="constants-list" class="section"> <h3 class="section-header">Constants</h3> <dl> <dt id="BIT64">BIT64 <dd class="description"> <dt id="BUILD_DIR">BUILD_DIR <dd class="description"> <dt id="CONFIG">CONFIG <dd class="description"> <dt id="DISTFILES_DIR">DISTFILES_DIR <dd class="description"> <dt id="GEM_INSTALL_FILES">GEM_INSTALL_FILES <dd class="description"> <dt id="HOSED_VERSIONS">HOSED_VERSIONS <dd class="description"><p>Mysterious “ghost” releases which lack files</p> <dt id="P4API_REMOTE_BASENAME">P4API_REMOTE_BASENAME <dd class="description"> <dt id="P4RUBY_REMOTE_BASENAME">P4RUBY_REMOTE_BASENAME <dd class="description"> <dt id="RAW_INSTALL_FILES">RAW_INSTALL_FILES <dd class="description"> <dt id="RB_BASENAME">RB_BASENAME <dd class="description"> <dt id="SERVER">SERVER <dd class="description"> <dt id="SERVER_TOP_DIR">SERVER_TOP_DIR <dd class="description"> <dt id="SO_BASENAME">SO_BASENAME <dd class="description"> <dt id="WORK_DIR">WORK_DIR <dd class="description"> </dl> </section> <!-- Methods --> <section id="public-instance-5Buntitled-5D-method-details" class="method-section section"> <h3 class="section-header">Public Instance Methods</h3> <div id="method-i-build" class="method-detail "> <div class="method-heading"> <span class="method-name">build</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="build-source"> <pre><span class="ruby-comment"># File install.rb, line 325</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">build</span> <span class="ruby-identifier">puts</span> <span class="ruby-string">"building..."</span> <span class="ruby-identifier">rm_rf</span>(<span class="ruby-constant">BUILD_DIR</span>) <span class="ruby-identifier">mkdir_p</span>(<span class="ruby-constant">BUILD_DIR</span>) <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">specs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span> <span class="ruby-identifier">unpack</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">local</span>, <span class="ruby-constant">BUILD_DIR</span>) } <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>(<span class="ruby-constant">BUILD_DIR</span>) { <span class="ruby-identifier">api_dir</span> = <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-string">"p4api*"</span>).<span class="ruby-identifier">last</span> <span class="ruby-identifier">p4ruby_dir</span> = <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-string">"p4ruby*"</span>).<span class="ruby-identifier">last</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>(<span class="ruby-identifier">p4ruby_dir</span>) { <span class="ruby-identifier">ruby</span>(<span class="ruby-string">"p4conf.rb"</span>, <span class="ruby-string">"--apidir"</span>, <span class="ruby-node">"../#{api_dir}"</span>) <span class="ruby-identifier">make</span> } <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">p4ruby_build_dir</span> = <span class="ruby-constant">BUILD_DIR</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">p4ruby_dir</span> } <span class="ruby-keyword">end</span></pre> </div><!-- build-source --> </div> </div><!-- build-method --> <div id="method-i-config" class="method-detail "> <div class="method-heading"> <span class="method-name">config</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="config-source"> <pre><span class="ruby-comment"># File install.rb, line 112</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">config</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">CONFIG</span>[<span class="ruby-string">"LIBRUBYARG_SHARED"</span>].<span class="ruby-identifier">empty?</span> <span class="ruby-identifier">raise</span> <span class="ruby-string">"error: ruby must be configured with --enable-shared"</span> <span class="ruby-keyword">end</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">ftp</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">FTP</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">SERVER</span>).<span class="ruby-identifier">tap</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">passive</span> = <span class="ruby-keyword">true</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">login</span> } <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">p4api</span> = <span class="ruby-constant">LazyStruct</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">tap</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">basename</span> = <span class="ruby-constant">P4API_REMOTE_BASENAME</span> } <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">p4ruby</span> = <span class="ruby-constant">LazyStruct</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">tap</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">basename</span> = <span class="ruby-constant">P4RUBY_REMOTE_BASENAME</span> } <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">specs</span> = [ <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">p4ruby</span>, <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">p4api</span> ] <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">specs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">local</span> = <span class="ruby-constant">DISTFILES_DIR</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">basename</span> } <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">version</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">version</span> = <span class="ruby-identifier">latest_version</span> <span class="ruby-keyword">end</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">version_dir</span> = <span class="ruby-constant">SERVER_TOP_DIR</span> <span class="ruby-operator">+</span> <span class="ruby-node">"r#{@s.version}"</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">platform</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">platform</span> = <span class="ruby-identifier">guess_platform</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">platform</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">%rnt/</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">p4api</span>.<span class="ruby-identifier">remote</span> = <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">version_dir</span> <span class="ruby-operator">+</span> <span class="ruby-node">"bin.#{@s.platform}"</span> <span class="ruby-keyword">else</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">p4api</span>.<span class="ruby-identifier">remote</span> = <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">version_dir</span> <span class="ruby-operator">+</span> <span class="ruby-node">"bin.#{@s.platform}"</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">p4api</span>.<span class="ruby-identifier">basename</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">p4ruby</span>.<span class="ruby-identifier">remote</span> = <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">version_dir</span> <span class="ruby-operator">+</span> <span class="ruby-string">"bin.tools"</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">p4ruby</span>.<span class="ruby-identifier">basename</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div><!-- config-source --> </div> </div><!-- config-method --> <div id="method-i-fetch" class="method-detail "> <div class="method-heading"> <span class="method-name">fetch</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="fetch-source"> <pre><span class="ruby-comment"># File install.rb, line 270</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">fetch</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">specs</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">spec</span><span class="ruby-operator">|</span> <span class="ruby-identifier">fetch_spec</span>(<span class="ruby-identifier">spec</span>) } <span class="ruby-keyword">end</span></pre> </div><!-- fetch-source --> </div> </div><!-- fetch-method --> <div id="method-i-fetch_spec" class="method-detail "> <div class="method-heading"> <span class="method-name">fetch_spec</span><span class="method-args">(spec)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="fetch_spec-source"> <pre><span class="ruby-comment"># File install.rb, line 262</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">fetch_spec</span>(<span class="ruby-identifier">spec</span>) <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">local</span> <span class="ruby-identifier">mkdir_p</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">local</span>.<span class="ruby-identifier">dirname</span>) <span class="ruby-identifier">puts</span> <span class="ruby-node">"downloading ftp://#{SERVER}/#{spec.remote} ..."</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">ftp</span>.<span class="ruby-identifier">getbinaryfile</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">remote</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">local</span>.<span class="ruby-identifier">to_s</span>) <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div><!-- fetch_spec-source --> </div> </div><!-- fetch_spec-method --> <div id="method-i-find_ruby_version" class="method-detail "> <div class="method-heading"> <span class="method-name">find_ruby_version</span><span class="method-args">(spec)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="find_ruby_version-source"> <pre><span class="ruby-comment"># File install.rb, line 386</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">find_ruby_version</span>(<span class="ruby-identifier">spec</span>) <span class="ruby-identifier">remote_files_matching</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">remote</span>, <span class="ruby-regexp">%rp4ruby\d\d.exe/</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">r_ver</span><span class="ruby-operator">|</span> <span class="ruby-comment">#Find the latest version of p4ruby for this version of ruby</span> <span class="ruby-identifier">v_max</span> = <span class="ruby-constant">CONFIG</span>[<span class="ruby-string">"MAJOR"</span>] <span class="ruby-identifier">v_min</span> = <span class="ruby-constant">CONFIG</span>[<span class="ruby-string">"MINOR"</span>] <span class="ruby-identifier">version</span> = [<span class="ruby-identifier">v_max</span>, <span class="ruby-identifier">v_min</span>].<span class="ruby-identifier">join</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">r_ver</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">=~</span> <span class="ruby-node">%rp4ruby#{version}.exe/</span> <span class="ruby-keyword">return</span> <span class="ruby-node">"p4ruby#{version}.exe"</span> <span class="ruby-keyword">end</span> } <span class="ruby-keyword">nil</span> <span class="ruby-keyword">end</span></pre> </div><!-- find_ruby_version-source --> </div> </div><!-- find_ruby_version-method --> <div id="method-i-guess_cpu" class="method-detail "> <div class="method-heading"> <span class="method-name">guess_cpu</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="guess_cpu-source"> <pre><span class="ruby-comment"># File install.rb, line 155</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">guess_cpu</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">CONFIG</span>[<span class="ruby-string">"target_os"</span>] <span class="ruby-operator">=~</span> <span class="ruby-regexp">%rdarwin!</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">CONFIG</span>[<span class="ruby-string">"build"</span>] <span class="ruby-operator">=~</span> <span class="ruby-regexp">%ri686|x86_64/</span> <span class="ruby-string">"x86_64"</span> <span class="ruby-keyword">else</span> <span class="ruby-string">"x86"</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">else</span> <span class="ruby-keyword">case</span> <span class="ruby-constant">CONFIG</span>[<span class="ruby-string">"target_cpu"</span>] <span class="ruby-keyword">when</span> <span class="ruby-regexp">%ria!</span> <span class="ruby-string">"ia64"</span> <span class="ruby-keyword">when</span> <span class="ruby-regexp">%r86!</span> <span class="ruby-comment"># note: with '_'</span> <span class="ruby-string">"x86"</span> <span class="ruby-operator">+</span> (<span class="ruby-constant">BIT64</span> <span class="ruby-operator">?</span> <span class="ruby-string">"_64"</span> <span class="ruby-operator">:</span> <span class="ruby-string">""</span>) <span class="ruby-keyword">when</span> <span class="ruby-regexp">%r(ppc|sparc)!</span> <span class="ruby-comment"># note: without '_'</span> <span class="ruby-node">$1</span> <span class="ruby-operator">+</span> (<span class="ruby-constant">BIT64</span> <span class="ruby-operator">?</span> <span class="ruby-string">"64"</span> <span class="ruby-operator">:</span> <span class="ruby-string">""</span>) <span class="ruby-keyword">else</span> <span class="ruby-string">""</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div><!-- guess_cpu-source --> </div> </div><!-- guess_cpu-method --> <div id="method-i-guess_platform" class="method-detail "> <div class="method-heading"> <span class="method-name">guess_platform</span><span class="method-args">(opts = {})</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="guess_platform-source"> <pre><span class="ruby-comment"># File install.rb, line 199</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">guess_platform</span>(<span class="ruby-identifier">opts</span> = {}) <span class="ruby-identifier">config_os</span> = <span class="ruby-constant">CONFIG</span>[<span class="ruby-string">"target_os"</span>].<span class="ruby-identifier">downcase</span> <span class="ruby-identifier">windows_cpu</span> = <span class="ruby-constant">BIT64</span> <span class="ruby-operator">?</span> <span class="ruby-string">"x64"</span> <span class="ruby-operator">:</span> <span class="ruby-string">"x86"</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">config_os</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">%rcygwin!</span> <span class="ruby-string">"cygwin"</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">windows_cpu</span> <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">config_os</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">%r(mswin|mingw)!</span> <span class="ruby-string">"nt"</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">windows_cpu</span> <span class="ruby-keyword">elsif</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">local</span> <span class="ruby-string">"<local>"</span> <span class="ruby-keyword">else</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">match</span> = <span class="ruby-identifier">config_os</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp">%r\A\D+!</span>) <span class="ruby-identifier">guess_version</span>(<span class="ruby-identifier">match</span>[<span class="ruby-value">0</span>]) <span class="ruby-keyword">else</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div><!-- guess_platform-source --> </div> </div><!-- guess_platform-method --> <div id="method-i-guess_version" class="method-detail "> <div class="method-heading"> <span class="method-name">guess_version</span><span class="method-args">(os)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="guess_version-source"> <pre><span class="ruby-comment"># File install.rb, line 178</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">guess_version</span>(<span class="ruby-identifier">os</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">match</span> = <span class="ruby-value">%xuname -a`</span>.<span class="ruby-identifier">match</span>(<span class="ruby-node">%r#{os}\s+\S+\s+(\d+)\.(\d+)!</span>) <span class="ruby-identifier">version</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">captures</span>.<span class="ruby-identifier">join</span> <span class="ruby-identifier">cpu</span> = <span class="ruby-identifier">guess_cpu</span> <span class="ruby-identifier">platforms</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">platforms</span> <span class="ruby-identifier">built_platforms</span> = (<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-identifier">version</span>.<span class="ruby-identifier">to_i</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> [<span class="ruby-identifier">os</span>, <span class="ruby-identifier">n</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">cpu</span>].<span class="ruby-identifier">join</span> }.<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">platform</span><span class="ruby-operator">|</span> <span class="ruby-identifier">platforms</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">platform</span> } <span class="ruby-keyword">if</span> <span class="ruby-identifier">os</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">%rdarwin/</span> <span class="ruby-identifier">built_platforms</span>.<span class="ruby-identifier">pop</span> <span class="ruby-identifier">built_platforms</span>.<span class="ruby-identifier">last</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">built_platforms</span>.<span class="ruby-identifier">last</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">else</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div><!-- guess_version-source --> </div> </div><!-- guess_version-method --> <div id="method-i-install" class="method-detail "> <div class="method-heading"> <span class="method-name">install</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="install-source"> <pre><span class="ruby-comment"># File install.rb, line 353</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">install</span> <span class="ruby-identifier">puts</span> <span class="ruby-string">"installing..."</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>(<span class="ruby-ivar">@s</span>.<span class="ruby-identifier">p4ruby_build_dir</span>) { <span class="ruby-identifier">make</span>(<span class="ruby-string">"install"</span>) } <span class="ruby-keyword">if</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">gem_config</span> <span class="ruby-identifier">raw_install_to_gem_install</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div><!-- install-source --> </div> </div><!-- install-method --> <div id="method-i-install_fail" class="method-detail "> <div class="method-heading"> <span class="method-name">install_fail</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="install_fail-source"> <pre><span class="ruby-comment"># File install.rb, line 245</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">install_fail</span> <span class="ruby-keyword">yield</span> <span class="ruby-identifier">exit</span>(<span class="ruby-value">1</span>) <span class="ruby-keyword">end</span></pre> </div><!-- install_fail-source --> </div> </div><!-- install_fail-method --> <div id="method-i-latest_version" class="method-detail "> <div class="method-heading"> <span class="method-name">latest_version</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="latest_version-source"> <pre><span class="ruby-comment"># File install.rb, line 304</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">latest_version</span> <span class="ruby-identifier">versions</span>.<span class="ruby-identifier">reverse_each</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-keyword">begin</span> <span class="ruby-identifier">remote_files_matching</span>(<span class="ruby-node">"#{SERVER_TOP_DIR}/r#{v}/bin.tools"</span>,<span class="ruby-regexp">%rp4ruby/</span>) <span class="ruby-keyword">do</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">v</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">rescue</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">end</span> } <span class="ruby-keyword">end</span></pre> </div><!-- latest_version-source --> </div> </div><!-- latest_version-method --> <div id="method-i-make" class="method-detail "> <div class="method-heading"> <span class="method-name">make</span><span class="method-args">(*args)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="make-source"> <pre><span class="ruby-comment"># File install.rb, line 316</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">make</span>(*<span class="ruby-identifier">args</span>) <span class="ruby-identifier">sys</span>(<span class="ruby-string">"make"</span>, *<span class="ruby-identifier">args</span>) <span class="ruby-keyword">end</span></pre> </div><!-- make-source --> </div> </div><!-- make-method --> <div id="method-i-parse_command_line" class="method-detail "> <div class="method-heading"> <span class="method-name">parse_command_line</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="parse_command_line-source"> <pre><span class="ruby-comment"># File install.rb, line 46</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">parse_command_line</span> <span class="ruby-constant">OptionParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">"Usage: ruby install.rb [options]"</span>, <span class="ruby-value">24</span>, <span class="ruby-string">""</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">parser</span><span class="ruby-operator">|</span> <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>( <span class="ruby-string">"--version NN.N"</span>, <span class="ruby-string">"Version to download, e.g. 08.1. Default finds latest."</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">version</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">version</span> = <span class="ruby-identifier">version</span> } <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>( <span class="ruby-string">"--list-versions"</span>, <span class="ruby-string">"List available versions."</span>) { <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">list_versions</span> = <span class="ruby-keyword">true</span> } <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>( <span class="ruby-string">"--platform PLATFORM"</span>, <span class="ruby-string">"Perforce-named platform to download. Default guesses."</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">platform</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">platform</span> = <span class="ruby-identifier">platform</span> } <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>( <span class="ruby-string">"--list-platforms"</span>, <span class="ruby-string">"List available platforms for the given version."</span>) { <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">list_platforms</span> = <span class="ruby-keyword">true</span> } <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>( <span class="ruby-string">"--gem"</span>, <span class="ruby-string">"Gem configuration (for the gem installer)."</span>) { <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">gem_config</span> = <span class="ruby-keyword">true</span> } <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>( <span class="ruby-string">"--uninstall"</span>, <span class="ruby-string">"Uninstall."</span>) { <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">uninstall</span> = <span class="ruby-keyword">true</span> } <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>( <span class="ruby-string">"--local"</span>, <span class="ruby-string">"Use the files in work/distfiles (manual download)."</span>) { <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">local</span> = <span class="ruby-keyword">true</span> } <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-constant">ARGV</span>) } <span class="ruby-keyword">end</span></pre> </div><!-- parse_command_line-source --> </div> </div><!-- parse_command_line-method --> <div id="method-i-platform_fail" class="method-detail "> <div class="method-heading"> <span class="method-name">platform_fail</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="platform_fail-source"> <pre><span class="ruby-comment"># File install.rb, line 218</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">platform_fail</span> <span class="ruby-identifier">install_fail</span> { <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">version</span> = <span class="ruby-string">"<version>"</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">platform</span> = <span class="ruby-string">"<platform>"</span> <span class="ruby-identifier">message</span> = <span class="ruby-node">%Q{ Auto-fetch not yet handled for this platform. Run: \truby install.rb --list-platforms to see the available platforms, then run \truby install.rb --platform PLATFORM with your platform. If all of the above fails, manually fetch \tftp://#{SERVER}/#{@s.p4api.remote} Copy it to #{@s.p4api.local} and run install.rb --local. }</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">%r^ +(?=\S)!</span>, <span class="ruby-string">""</span>) <span class="ruby-identifier">mkdir_p</span>(<span class="ruby-constant">DISTFILES_DIR</span>) <span class="ruby-identifier">puts</span> <span class="ruby-identifier">message</span> } <span class="ruby-keyword">end</span></pre> </div><!-- platform_fail-source --> </div> </div><!-- platform_fail-method --> <div id="method-i-platforms" class="method-detail "> <div class="method-heading"> <span class="method-name">platforms</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="platforms-source"> <pre><span class="ruby-comment"># File install.rb, line 288</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">platforms</span> <span class="ruby-identifier">remote_files_matching</span>(<span class="ruby-ivar">@s</span>.<span class="ruby-identifier">version_dir</span>, <span class="ruby-regexp">%rbin\.(\w+)!</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">match</span><span class="ruby-operator">|</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">captures</span>.<span class="ruby-identifier">first</span> }.<span class="ruby-identifier">reject</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">platform</span><span class="ruby-operator">|</span> <span class="ruby-identifier">platform</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">%rjava!</span> }.<span class="ruby-identifier">sort</span> <span class="ruby-keyword">end</span></pre> </div><!-- platforms-source --> </div> </div><!-- platforms-method --> <div id="method-i-raw_install_to_gem_install" class="method-detail "> <div class="method-heading"> <span class="method-name">raw_install_to_gem_install</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="raw_install_to_gem_install-source"> <pre><span class="ruby-comment"># File install.rb, line 345</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">raw_install_to_gem_install</span> <span class="ruby-constant">RAW_INSTALL_FILES</span>.<span class="ruby-identifier">zip</span>(<span class="ruby-constant">GEM_INSTALL_FILES</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">source</span>, <span class="ruby-identifier">dest</span><span class="ruby-operator">|</span> <span class="ruby-identifier">mkdir_p</span>(<span class="ruby-identifier">dest</span>.<span class="ruby-identifier">dirname</span>) <span class="ruby-identifier">puts</span> <span class="ruby-node">"move #{source} --> #{dest}"</span> <span class="ruby-identifier">mv</span>(<span class="ruby-identifier">source</span>, <span class="ruby-identifier">dest</span>) } <span class="ruby-keyword">end</span></pre> </div><!-- raw_install_to_gem_install-source --> </div> </div><!-- raw_install_to_gem_install-method --> <div id="method-i-remote_files_matching" class="method-detail "> <div class="method-heading"> <span class="method-name">remote_files_matching</span><span class="method-args">(dir, regex) { |match| ... }</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="remote_files_matching-source"> <pre><span class="ruby-comment"># File install.rb, line 276</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">remote_files_matching</span>(<span class="ruby-identifier">dir</span>, <span class="ruby-identifier">regex</span>) <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">ftp</span>.<span class="ruby-identifier">ls</span>(<span class="ruby-identifier">dir</span>.<span class="ruby-identifier">to_s</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">match</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">regex</span>) <span class="ruby-keyword">yield</span> <span class="ruby-identifier">match</span> <span class="ruby-keyword">else</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">end</span> }.<span class="ruby-identifier">reject</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">nil?</span> } <span class="ruby-keyword">end</span></pre> </div><!-- remote_files_matching-source --> </div> </div><!-- remote_files_matching-method --> <div id="method-i-ruby" class="method-detail "> <div class="method-heading"> <span class="method-name">ruby</span><span class="method-args">(*args)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="ruby-source"> <pre><span class="ruby-comment"># File install.rb, line 320</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">ruby</span>(*<span class="ruby-identifier">args</span>) <span class="ruby-identifier">exe</span> = <span class="ruby-constant">Pathname</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">CONFIG</span>[<span class="ruby-string">"bindir"</span>]) <span class="ruby-operator">+</span> <span class="ruby-constant">CONFIG</span>[<span class="ruby-string">"RUBY_INSTALL_NAME"</span>] <span class="ruby-identifier">sys</span>(<span class="ruby-identifier">exe</span>.<span class="ruby-identifier">to_s</span>, *<span class="ruby-identifier">args</span>) <span class="ruby-keyword">end</span></pre> </div><!-- ruby-source --> </div> </div><!-- ruby-method --> <div id="method-i-run" class="method-detail "> <div class="method-heading"> <span class="method-name">run</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="run-source"> <pre><span class="ruby-comment"># File install.rb, line 90</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">run</span> <span class="ruby-ivar">@s</span> = <span class="ruby-constant">LazyStruct</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">parse_command_line</span> <span class="ruby-identifier">config</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">uninstall</span> <span class="ruby-identifier">uninstall</span> <span class="ruby-keyword">elsif</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">list_platforms</span> <span class="ruby-identifier">puts</span> <span class="ruby-identifier">platforms</span> <span class="ruby-keyword">elsif</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">list_versions</span> <span class="ruby-identifier">puts</span> <span class="ruby-identifier">versions</span> <span class="ruby-keyword">elsif</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">platform</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-identifier">platform_fail</span> <span class="ruby-keyword">elsif</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">platform</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">%r\Ant!</span> <span class="ruby-identifier">windows_install</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">fetch</span> <span class="ruby-identifier">build</span> <span class="ruby-identifier">install</span> <span class="ruby-identifier">verify_install</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div><!-- run-source --> </div> </div><!-- run-method --> <div id="method-i-sys" class="method-detail "> <div class="method-heading"> <span class="method-name">sys</span><span class="method-args">(*args)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="sys-source"> <pre><span class="ruby-comment"># File install.rb, line 250</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">sys</span>(*<span class="ruby-identifier">args</span>) <span class="ruby-identifier">system</span>(*<span class="ruby-identifier">args</span>).<span class="ruby-identifier">tap</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">result</span><span class="ruby-operator">|</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">result</span> <span class="ruby-identifier">raise</span> <span class="ruby-node">"system() failed: #{args.join(" ")}"</span> <span class="ruby-keyword">end</span> } <span class="ruby-keyword">end</span></pre> </div><!-- sys-source --> </div> </div><!-- sys-method --> <div id="method-i-uninstall" class="method-detail "> <div class="method-heading"> <span class="method-name">uninstall</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="uninstall-source"> <pre><span class="ruby-comment"># File install.rb, line 439</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">uninstall</span> <span class="ruby-constant">RAW_INSTALL_FILES</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">file</span>.<span class="ruby-identifier">exist?</span> <span class="ruby-identifier">puts</span> <span class="ruby-node">"delete #{file}"</span> <span class="ruby-identifier">rm_f</span>(<span class="ruby-identifier">file</span>) <span class="ruby-keyword">end</span> } <span class="ruby-keyword">end</span></pre> </div><!-- uninstall-source --> </div> </div><!-- uninstall-method --> <div id="method-i-unpack" class="method-detail "> <div class="method-heading"> <span class="method-name">unpack</span><span class="method-args">(distfile, target_dir)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="unpack-source"> <pre><span class="ruby-comment"># File install.rb, line 258</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">unpack</span>(<span class="ruby-identifier">distfile</span>, <span class="ruby-identifier">target_dir</span>) <span class="ruby-identifier">sys</span>(<span class="ruby-string">"tar"</span>, <span class="ruby-string">"zxvf"</span>, <span class="ruby-identifier">distfile</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-string">"-C"</span>, <span class="ruby-identifier">target_dir</span>.<span class="ruby-identifier">to_s</span>) <span class="ruby-keyword">end</span></pre> </div><!-- unpack-source --> </div> </div><!-- unpack-method --> <div id="method-i-verify_install" class="method-detail "> <div class="method-heading"> <span class="method-name">verify_install</span><span class="method-args">(on_error = nil)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="verify_install-source"> <pre><span class="ruby-comment"># File install.rb, line 363</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">verify_install</span>(<span class="ruby-identifier">on_error</span> = <span class="ruby-keyword">nil</span>) <span class="ruby-identifier">puts</span> <span class="ruby-string">"verifying..."</span> <span class="ruby-identifier">files</span> = <span class="ruby-keyword">if</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">gem_config</span> <span class="ruby-constant">GEM_INSTALL_FILES</span> <span class="ruby-keyword">else</span> <span class="ruby-constant">RAW_INSTALL_FILES</span> <span class="ruby-keyword">end</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">expand_path</span> } <span class="ruby-keyword">if</span> <span class="ruby-identifier">files</span>.<span class="ruby-identifier">all?</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">exist?</span> } <span class="ruby-identifier">puts</span> <span class="ruby-string">"Installed files:"</span> <span class="ruby-identifier">puts</span> <span class="ruby-identifier">files</span> <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">on_error</span> <span class="ruby-identifier">install_fail</span>(&<span class="ruby-identifier">on_error</span>) <span class="ruby-keyword">else</span> <span class="ruby-identifier">install_fail</span> { <span class="ruby-identifier">puts</span> <span class="ruby-string">"These files were supposed to be installed, but were not:"</span> <span class="ruby-identifier">puts</span> <span class="ruby-identifier">files</span> <span class="ruby-identifier">puts</span> <span class="ruby-string">"Install failed!"</span> } <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div><!-- verify_install-source --> </div> </div><!-- verify_install-method --> <div id="method-i-versions" class="method-detail "> <div class="method-heading"> <span class="method-name">versions</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="versions-source"> <pre><span class="ruby-comment"># File install.rb, line 296</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">versions</span> <span class="ruby-identifier">remote_files_matching</span>(<span class="ruby-constant">SERVER_TOP_DIR</span>, <span class="ruby-regexp">%rr([0-8]\d\.\d)!</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">match</span><span class="ruby-operator">|</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">captures</span>.<span class="ruby-identifier">first</span> }.<span class="ruby-identifier">reject</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">version</span><span class="ruby-operator">|</span> <span class="ruby-constant">HOSED_VERSIONS</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">version</span> }.<span class="ruby-identifier">sort</span> <span class="ruby-keyword">end</span></pre> </div><!-- versions-source --> </div> </div><!-- versions-method --> <div id="method-i-windows_install" class="method-detail "> <div class="method-heading"> <span class="method-name">windows_install</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="windows_install-source"> <pre><span class="ruby-comment"># File install.rb, line 401</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">windows_install</span> <span class="ruby-comment">#</span> <span class="ruby-comment"># For Windows, p4ruby is located in the p4api directory on the</span> <span class="ruby-comment"># perforce server -- switcharoo --</span> <span class="ruby-comment">#</span> <span class="ruby-identifier">spec</span> = <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">p4api</span> <span class="ruby-identifier">p4ruby_exe</span> = <span class="ruby-identifier">find_ruby_version</span>(<span class="ruby-identifier">spec</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">p4ruby_exe</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">remote</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">%rp4ruby/</span>) <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">remote</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">p4ruby_exe</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">abort</span>(<span class="ruby-node">"Failed to find a suitable p4ruby executable for ruby #{CONFIG["MAJOR"]}.#{CONFIG["MINOR"]}"</span>) <span class="ruby-keyword">end</span> <span class="ruby-identifier">fetch_spec</span>(<span class="ruby-identifier">spec</span>) <span class="ruby-identifier">error</span> = <span class="ruby-identifier">lambda</span> { <span class="ruby-identifier">puts</span> <span class="ruby-string">"The Perforce P4Ruby Windows installer failed!"</span> <span class="ruby-identifier">puts</span> <span class="ruby-string">"You may re-run it manually here:"</span> <span class="ruby-identifier">puts</span> <span class="ruby-identifier">spec</span>.<span class="ruby-identifier">local</span>.<span class="ruby-identifier">expand_path</span> } <span class="ruby-identifier">puts</span> <span class="ruby-string">"running Perforce P4Ruby Windows installer..."</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">system</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">local</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-string">"/S"</span>, <span class="ruby-string">"/v/qn"</span>) <span class="ruby-keyword">if</span> <span class="ruby-ivar">@s</span>.<span class="ruby-identifier">gem_config</span> <span class="ruby-identifier">sleep</span>(<span class="ruby-value">1</span>) <span class="ruby-identifier">raw_install_to_gem_install</span> <span class="ruby-identifier">sleep</span>(<span class="ruby-value">1</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">system</span>(<span class="ruby-identifier">spec</span>.<span class="ruby-identifier">local</span>, <span class="ruby-string">"/V"</span>, <span class="ruby-string">"/x"</span>, <span class="ruby-string">"/S"</span>, <span class="ruby-string">"/v/qn"</span>) <span class="ruby-comment"># We don't much care if this fails; just write to the log</span> <span class="ruby-identifier">puts</span> <span class="ruby-string">"Note: the Perforce P4Ruby Windows uninstaller failed."</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">verify_install</span>(<span class="ruby-identifier">error</span>) <span class="ruby-keyword">else</span> <span class="ruby-identifier">install_fail</span>(&<span class="ruby-identifier">error</span>) <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div><!-- windows_install-source --> </div> </div><!-- windows_install-method --> </section><!-- public-instance-method-details --> </section><!-- 5Buntitled-5D --> </div><!-- documentation --> <footer id="validator-badges"> <p><a href="http://validator.w3.org/check/referer">[Validate]</a> <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12. <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3. </footer>
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#2 | 9254 | Jen Bottom |
updated gemspec and cleaned out doc directory. Will re-generate as part of the Gem build process |
||
#1 | 8366 | Jen Bottom | Adding the source code and docs for the P4Ruby Gem to the Public Depot. |