class Vanagon::CLI::List

Constants

DOCUMENTATION

Public Instance Methods

check_directories(options) click to toggle source
# File lib/vanagon/cli/list.rb, line 61
def check_directories(options)
  platforms_directory = File.join(options[:configdir], 'platforms')
  projects_directory = File.join(options[:configdir], 'projects')

  unless Dir.exist?(platforms_directory)
    VanagonLogger.error "Platforms directory \"#{platforms_directory}\" does not exist."
    exit 1
  end

  unless Dir.exist?(projects_directory)
    VanagonLogger.error "Projectss directory \"#{projects_directory}\" does not exist."
    exit 1
  end
end
options_translate(docopt_options) click to toggle source
# File lib/vanagon/cli/list.rb, line 82
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
  check_directories(options)

  default_list = topic_list(File.dirname(__FILE__), '..', 'platform', 'defaults')
  platform_list = topic_list(options[:configdir], 'platforms')
  project_list = topic_list(options[:configdir], 'projects')

  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
topic_list(*topic_path_items) click to toggle source
# File lib/vanagon/cli/list.rb, line 76
def topic_list(*topic_path_items)
  Dir.children(File.join(topic_path_items)).map do |t|
    File.basename(t, File.extname(t))
  end.sort
end