Class: Juicer::Install::RhinoInstaller
- Defined in:
- lib/juicer/install/rhino_installer.rb
Overview
Install and uninstall routines for the Mozilla Rhino jar.
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize(install_dir = Juicer.home) ⇒ RhinoInstaller
constructor
A new instance of RhinoInstaller.
-
#install(version = nil) ⇒ Object
Install Rhino.
- #latest ⇒ Object
-
#uninstall(version = nil) ⇒ Object
Uninstalls Rhino.
Methods inherited from Base
#bin_path, #dependencies, #dependency, #download, #installed?, #log, #name, #path
Constructor Details
#initialize(install_dir = Juicer.home) ⇒ RhinoInstaller
Returns a new instance of RhinoInstaller.
11 12 13 14 15 |
# File 'lib/juicer/install/rhino_installer.rb', line 11 def initialize(install_dir = Juicer.home) super(install_dir) @latest = nil @website = "http://ftp.mozilla.org/pub/mozilla.org/js/" end |
Instance Method Details
#install(version = nil) ⇒ Object
Install Rhino. Downloads the jar file and stores it in the installation directory along with the License text.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/juicer/install/rhino_installer.rb', line 21 def install(version = nil) version = super((version || latest).gsub(/\./, "_")) base = "rhino#{version}" filename = download(File.join(@website, "#{base}.zip")) target = File.join(@install_dir, path) Zip::ZipFile.open(filename) do |file| FileUtils.mkdir_p(File.join(target, version)) begin file.extract("#{base.sub(/-RC\d/, "")}/LICENSE.txt", File.join(target, version, "LICENSE.txt")) rescue Exception # Fail silently, some releases don't carry the license end file.extract("#{base.sub(/-RC\d/, "")}/js.jar", File.join(target, "bin", "#{base}.jar")) end end |
#latest ⇒ Object
50 51 52 53 54 55 |
# File 'lib/juicer/install/rhino_installer.rb', line 50 def latest return @latest if @latest webpage = Nokogiri::HTML(open(@website).read) versions = (webpage / "td a").to_a.find_all { |a| a.attr("href") =~ /rhino\d_/ } @latest = versions.collect { |n| n.attr("href") }.sort.last.match(/rhino(\d_.*)\.zip/)[1] end |
#uninstall(version = nil) ⇒ Object
Uninstalls Rhino
43 44 45 46 47 48 |
# File 'lib/juicer/install/rhino_installer.rb', line 43 def uninstall(version = nil) super((version || latest).gsub(/\./, "_")) do |dir, version| base = "rhino#{version}" File.delete(File.join(dir, "bin/", "#{base}.jar")) end end |