Class: Juicer::Install::ClosureCompilerInstaller
- Defined in:
- lib/juicer/install/closure_compiler_installer.rb
Overview
Install and uninstall routines for the Google Closure Compiler. Installation downloads the Closure Compiler distribution, unzips it and storesthe jar file on disk along with the README.
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize(install_dir = Juicer.home) ⇒ ClosureCompilerInstaller
constructor
A new instance of ClosureCompilerInstaller.
-
#install(version = nil) ⇒ Object
Install the Closure Compiler.
-
#latest ⇒ Object
Check which version is the most recent.
-
#uninstall(version = nil) ⇒ Object
Uninstalls the given version of Closure Compiler.
Methods inherited from Base
#bin_path, #dependencies, #dependency, #download, #installed?, #log, #name, #path
Constructor Details
#initialize(install_dir = Juicer.home) ⇒ ClosureCompilerInstaller
Returns a new instance of ClosureCompilerInstaller.
13 14 15 16 17 18 |
# File 'lib/juicer/install/closure_compiler_installer.rb', line 13 def initialize(install_dir = Juicer.home) super(install_dir) @latest = nil @website = "http://code.google.com/p/closure-compiler/downloads/list" @download_link = "http://closure-compiler.googlecode.com/files/compiler-%s.zip" end |
Instance Method Details
#install(version = nil) ⇒ Object
Install the Closure Compiler. Downloads the distribution and keeps the jar file inside PATH/closure_compiler/bin and the README in PATH/closere_compiler/yyyymmdd/ where yyyymmdd is the version, most recent if not specified otherwise.
Path defaults to environment variable $JUICER_HOME or default Juicer home
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/juicer/install/closure_compiler_installer.rb', line 29 def install(version = nil) version = super(version) base = "closure-compiler-#{version}" filename = download(@download_link % version) target = File.join(@install_dir, path) Zip::ZipFile.open(filename) do |file| file.extract("README", File.join(target, version, "README")) file.extract("compiler.jar", File.join(target, "bin", "#{base}.jar")) end end |
#latest ⇒ Object
Check which version is the most recent
60 61 62 63 64 65 66 |
# File 'lib/juicer/install/closure_compiler_installer.rb', line 60 def latest return @latest if @latest webpage = Nokogiri::HTML(open(@website).read) @latest = (webpage / "//table[@id='resultstable']//td/a[contains(@href, 'compiler')]").map{|link| link.get_attribute('href')[/\d{8}/].to_i }.sort.last.to_s end |
#uninstall(version = nil) ⇒ Object
Uninstalls the given version of Closure Compiler. If no location is provided the environment variable $JUICER_HOME or Juicers default home directory is used.
If no version is provided the most recent version is assumed.
If there are no more files left in INSTALLATION_PATH/closure_compiler, the whole directory is removed.
51 52 53 54 55 |
# File 'lib/juicer/install/closure_compiler_installer.rb', line 51 def uninstall(version = nil) super(version) do |dir, version| File.delete(File.join(dir, "bin/closure-compiler-#{version}.jar")) end end |