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