class Vanagon::CLI::BuildRequirements

Constants

DOCUMENTATION

Public Instance Methods

options_translate(docopt_options) click to toggle source
# File lib/vanagon/cli/build_requirements.rb, line 55
def options_translate(docopt_options)
  translations = {
    '--verbose' => :verbose,
    '--workdir' => :workdir,
    '--configdir' => :configdir,
    '--engine' => :engine,
    '<project-name>' => :project_name,
    '<platform>' => :platform,
  }
  return docopt_options.map { |k, v| [translations[k], v] }.to_h
end
parse(argv) click to toggle source
# File lib/vanagon/cli/build_requirements.rb, line 28
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_requirements.rb, line 35
def run(options) # rubocop:disable Metrics/AbcSize
  platform = options[:platform]
  project = options[:project_name]
  driver = Vanagon::Driver.new(platform, project)

  components = driver.project.components
  component_names = components.map(&:name)
  build_requirements = []
  components.each do |component|
    build_requirements << component.build_requires.reject do |requirement|
      # only include external requirements: i.e. those that do not match
      # other components in the project
      component_names.include?(requirement)
    end
  end

  VanagonLogger.warn "**** External packages required to build #{project} on #{platform}: ***"
  VanagonLogger.warn JSON.pretty_generate(build_requirements.flatten.uniq.sort)
end