class Vanagon::CLI::List

Constants

DOCUMENTATION

Public Instance Methods

options_translate(docopt_options) click to toggle source
# File lib/vanagon/cli/list.rb, line 73
def options_translate(docopt_options)
  translations = {
    '--configdir' => :configdir,
    '--defaults' => :defaults,
    '--platforms' => :platforms,
    '--projects' => :projects,
    '--use-spaces' => :use_spaces,
  }
  return docopt_options.map { |k, v| [translations[k], v] }.to_h
end
output(list, use_spaces) click to toggle source
# File lib/vanagon/cli/list.rb, line 27
def output(list, use_spaces)
  return list.join(' ') if use_spaces
  return list
end
parse(argv) click to toggle source
# File lib/vanagon/cli/list.rb, line 20
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/list.rb, line 32
def run(options) # rubocop:disable Metrics/AbcSize
  if Dir.exist?(File.join(options[:configdir], 'platforms')) == false ||
     Dir.exist?(File.join(options[:configdir], 'projects')) == false

    VanagonLogger.error "Path to #{File.join(options[:configdir], 'platforms')} or #{File.join(options[:configdir], 'projects')} not found."
    exit 1
  end

  default_list = Dir.children(File.join(File.dirname(__FILE__), '..', 'platform', 'defaults')).map do |platform|
    File.basename(platform, File.extname(platform))
  end.sort

  platform_list = Dir.children(File.join(options[:configdir], 'platforms')).map do |platform|
    File.basename(platform, File.extname(platform))
  end.sort

  project_list = Dir.children(File.join(options[:configdir], 'projects')).map do |project|
    File.basename(project, File.extname(project))
  end.sort

  if options[:defaults]
    puts "- Defaults", output(default_list, options[:use_spaces])
    return
  end

  if options[:projects] == options[:platforms]
    puts "- Projects", output(project_list, options[:use_spaces]), "\n", "- Platforms", output(platform_list, options[:use_spaces])
    return
  end

  if options[:projects]
    puts "- Projects", output(project_list, options[:use_spaces])
    return
  end

  if options[:platforms]
    puts "- Platforms", output(platform_list, options[:use_spaces])
    return
  end
end