class ToplevelInstaller

Constants

TASKS
Version

Public Class Methods

invoke() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 789
def ToplevelInstaller.invoke
  config = ConfigTable.new(load_rbconfig())
  config.load_standard_entries
  config.load_multipackage_entries if multipackage?
  config.fixup
  klass = (multipackage?() ? ToplevelInstallerMulti : ToplevelInstaller)
  klass.new(File.dirname($0), config).invoke
end
load_rbconfig() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 802
def ToplevelInstaller.load_rbconfig
  if arg = ARGV.detect {|inner_arg| /\A--rbconfig=/ =~ inner_arg }
    ARGV.delete(arg)
    load File.expand_path(arg.split(/=/, 2)[1])
    $".push 'rbconfig.rb'
  else
    require 'rbconfig'
  end
  if RUBY_VERSION < '1.9'
    ::Config::CONFIG
  else
    ::RbConfig::CONFIG
  end
end
multipackage?() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 798
def ToplevelInstaller.multipackage?
  File.dir?(File.dirname($0) + '/packages')
end
new(ardir_root, config) click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 817
def initialize(ardir_root, config)
  @ardir = File.expand_path(ardir_root)
  @config = config
  # cache
  @valid_task_re = nil
end

Public Instance Methods

config(key) click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 824
def config(key)
  @config[key]
end
exec_clean() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 1039
def exec_clean
  @installer.exec_clean
end
exec_config() click to toggle source

Task Handlers

# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 1016
def exec_config
  @installer.exec_config
  @config.save   # must be final
end
exec_distclean() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 1043
def exec_distclean
  @installer.exec_distclean
end
exec_install() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 1025
def exec_install
  @installer.exec_install
end
exec_setup() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 1021
def exec_setup
  @installer.exec_setup
end
exec_show() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 1033
def exec_show
  @config.each do |i|
    printf "%-20s %s\n", i.name, i.value if i.value?
  end
end
exec_test() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 1029
def exec_test
  @installer.exec_test
end
init_installers() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 860
def init_installers
  @installer = Installer.new(@config, @ardir, File.expand_path('.'))
end
inspect() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 828
def inspect
  "#<#{self.class} #{__id__()}>"
end
invoke() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 832
def invoke
  run_metaconfigs
  case task = parsearg_global()
  when nil, 'all'
    parsearg_config
    init_installers
    exec_config
    exec_setup
    exec_install
  else
    case task
    when 'config', 'test'
      ;
    when 'clean', 'distclean'
      @config.load_savefile if File.exist?(@config.savefile)
    else
      @config.load_savefile
    end
    __send__ "parsearg_#{task}"
    init_installers
    __send__ "exec_#{task}"
  end
end
objdir_root() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 872
def objdir_root
  '.'
end
parsearg_clean()
Alias for: parsearg_no_options
parsearg_config() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 931
def parsearg_config
  evalopt = []
  set = []
  @config.config_opt = []
  while i = ARGV.shift
    if /\A--?\z/ =~ i
      @config.config_opt = ARGV.dup
      break
    end
    name, value = *@config.parse_opt(i)
    if @config.value_config?(name)
      @config[name] = value
    else
      evalopt.push [name, value]
    end
    set.push name
  end
  evalopt.each do |inner_name, inner_value|
    @config.lookup(inner_name).evaluate inner_value, @config
  end
  # Check if configuration is valid
  set.each do |n|
    @config[n] if @config.value_config?(n)
  end
end
parsearg_distclean()
Alias for: parsearg_no_options
parsearg_global() click to toggle source

Option Parsing

# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 884
def parsearg_global
  while arg = ARGV.shift
    case arg
    when /\A\w+\z/
      setup_rb_error "invalid task: #{arg}" unless valid_task?(arg)
      return arg
    when '-q', '--quiet'
      @config.verbose = false
    when '--verbose'
      @config.verbose = true
    when '--help'
      print_usage $stdout
      exit 0
    when '--version'
      puts "#{File.basename($0)} version #{Version}"
      exit 0
    when '--copyright'
      puts Copyright
      exit 0
    else
      setup_rb_error "unknown global option '#{arg}'"
    end
  end
  nil
end
parsearg_install() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 957
def parsearg_install
  @config.no_harm = false
  @config.install_prefix = ''
  while a = ARGV.shift
    case a
    when '--no-harm'
      @config.no_harm = true
    when /\A--prefix=/
      path = a.split(/=/, 2)[1]
      path = File.expand_path(path) unless path[0,1] == '/'
      @config.install_prefix = path
    else
      setup_rb_error "install: unknown option #{a}"
    end
  end
end
parsearg_no_options() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 918
def parsearg_no_options
  unless ARGV.empty?
    task = caller(0).first.slice(%r<`parsearg_(\w+)'>, 1)
    setup_rb_error "#{task}: unknown options: #{ARGV.join(' ')}"
  end
end
parsearg_setup()
Alias for: parsearg_no_options
parsearg_show()
Alias for: parsearg_no_options
parsearg_test()
Alias for: parsearg_no_options
print_usage(out) click to toggle source
relpath() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 876
def relpath
  '.'
end
run_metaconfigs() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 856
def run_metaconfigs
  @config.load_script "#{@ardir}/metaconfig"
end
srcdir_root() click to toggle source

Hook Script API bases

# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 868
def srcdir_root
  @ardir
end
valid_task?(t) click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 910
def valid_task?(t)
  valid_task_re() =~ t
end
valid_task_re() click to toggle source
# File lib/rbt/yaml/individual_cookbooks/setup.rb, line 914
def valid_task_re
  @valid_task_re ||= /\A(?:#{TASKS.map {|task,desc| task }.join('|')})\z/
end