class Vanagon::CLI::Build

Constants

DOCUMENTATION

Public Instance Methods

options_translate(docopt_options) click to toggle source
# File lib/vanagon/cli/build.rb, line 60
def options_translate(docopt_options)
  translations = {
    '--verbose' => :verbose,
    '--workdir' => :workdir,
    '--remote-workdir' => :'remote-workdir',
    '--configdir' => :configdir,
    '--engine' => :engine,
    '--skipcheck' => :skipcheck,
    '--preserve' => :preserve,
    '--only-build' => :only_build,
    '<project-name>' => :project_name,
    '<platforms>' => :platforms,
    '<targets>' => :targets
  }
  return docopt_options.map { |k, v| [translations[k], v] }.to_h
end
options_validate(options) click to toggle source
# File lib/vanagon/cli/build.rb, line 77
def options_validate(options)
  # Handle --preserve option checking
  valid_preserves = %w[always never on-failure]
  unless valid_preserves.include? options[:preserve]
    raise InvalidArgument, "--preserve option can only be one of: #{valid_preserves.join(', ')}"
  end
  options[:preserve] = options[:preserve].to_sym
  return options
end
parse(argv) click to toggle source
# File lib/vanagon/cli/build.rb, line 33
def parse(argv)
  Docopt.docopt(DOCUMENTATION, { argv: argv })
rescue Docopt::Exit => e
  VanagonLogger.error e.message
  exit 1
end
run(options) click to toggle source
# File lib/vanagon/cli/build.rb, line 40
def run(options) # rubocop:disable Metrics/AbcSize
  project = options[:project_name]
  platform_list = options[:platforms].split(',')
  target_list = []
  unless options[:targets].nil? || options[:targets].empty?
    target_list = options[:targets].split(',')
  end

  only_build = []
  unless options[:only_build].nil? || options[:only_build].empty?
    only_build = options[:only_build].split(',')
  end

  platform_list.zip(target_list).each do |pair|
    platform, target = pair
    artifact = Vanagon::Driver.new(platform, project, options.merge({ :target => target, :only_build => only_build }))
    artifact.run
  end
end