class Kmc::Package
Attributes
do_not_unzip[R]
download_dir[R]
ksp_path[R]
Public Class Methods
do_not_unzip!()
click to toggle source
# File lib/kmc/package.rb, line 64 def do_not_unzip! @do_not_unzip = true end
download!()
click to toggle source
# File lib/kmc/package.rb, line 60 def download! PackageDownloads.download_package(self) end
download_and_unzip!()
click to toggle source
# File lib/kmc/package.rb, line 56 def download_and_unzip! PackageDownloads.download_and_unzip_package(self) end
inherited(package)
click to toggle source
a callback for when a subclass of this class is created
# File lib/kmc/package.rb, line 69 def inherited(package) (@@packages ||= []) << package end
install!(ksp_path, caveats)
click to toggle source
Internal version of the `install` method. Handles:
* Pre- and post-requisites * Version control * Post-processors * Calling a package's #install method * Building up caveats
The caveats argument is expected to be a hash going from Packages to caveat messages and will be modified in-place.
# File lib/kmc/package.rb, line 34 def install!(ksp_path, caveats) return if Versioner.already_installed?(ksp_path, self) Util.log "Installing package #{self.title}" prepare_for_install(ksp_path, caveats) Util.log "Saving your work before installing ..." Versioner.mark_preinstall(ksp_path, self) Util.log "Installing #{title} ..." self.new.install Util.log "Cleaning up ..." Util.run_post_processors!(ksp_path) Versioner.mark_postinstall(ksp_path, self) Util.log "Done!" install_postrequisites!(caveats) end
install_packages!(ksp_path, packages)
click to toggle source
Installs a list of packages, and outputs caveats when it's done.
# File lib/kmc/package.rb, line 19 def install_packages!(ksp_path, packages) caveats = {} packages.each { |package| package.install!(ksp_path, caveats) } log_caveats(caveats) end
load_packages!()
click to toggle source
# File lib/kmc/package.rb, line 77 def load_packages! Dir[File.join(Configuration.packages_path, '*.rb')].each do |file| require file end end
packages()
click to toggle source
# File lib/kmc/package.rb, line 73 def packages @@packages end
Private Class Methods
add_caveat_message!(caveats)
click to toggle source
# File lib/kmc/package.rb, line 94 def add_caveat_message!(caveats) if method_defined?(:caveats) caveats.merge!(self => self.new.caveats) end end
install_postrequisites!(caveats)
click to toggle source
# File lib/kmc/package.rb, line 109 def install_postrequisites!(caveats) resolve_postrequisites.each do |package| unless Versioner.already_installed?(ksp_path, package) Util.log "#{title} has postrequisite #{package.title}." package.install!(ksp_path, caveats) end end end
install_prerequisites!(caveats)
click to toggle source
# File lib/kmc/package.rb, line 100 def install_prerequisites!(caveats) resolve_prerequisites.each do |package| unless Versioner.already_installed?(ksp_path, package) Util.log "#{title} has prerequisite #{package.title}." package.install!(ksp_path, caveats) end end end
load_post_processors!()
click to toggle source
# File lib/kmc/package.rb, line 131 def load_post_processors! processors_path = File.join(File.dirname(__FILE__), 'post_processors') Dir["#{processors_path}/*.rb"].each do |file| require file end end
log_caveats(caveats)
click to toggle source
# File lib/kmc/package.rb, line 118 def log_caveats(caveats) if caveats.any? Util.log "===> Caveats" caveats.each do |package, message| Util.log <<-EOS.undent Caveat from #{package.title}: #{message} EOS end end end
prepare_for_install(ksp_path, caveats)
click to toggle source
Run steps that take place before installation.
# File lib/kmc/package.rb, line 87 def prepare_for_install(ksp_path, caveats) add_caveat_message!(caveats) @ksp_path = ksp_path install_prerequisites!(caveats) @download_dir = download_and_unzip! end