Class: Vanagon::CLI::Dependencies
- Inherits:
-
Vanagon::CLI
- Object
- Vanagon::CLI
- Vanagon::CLI::Dependencies
- Defined in:
- lib/vanagon/cli/dependencies.rb
Constant Summary collapse
- DOCUMENTATION =
<<~DOCOPT.freeze Usage: dependencies [options] <project-name> <platforms> Options: -h, --help Display help -c, --configdir DIRECTORY Configuration directory [default: #{Dir.pwd}/configs] -w, --workdir DIRECTORY Working directory on the local host -v, --verbose Only here for backwards compatibility. Does nothing. Project-Name: May be a project name of a project from the configs/projects directory or 'all' to generate dependencies for all projects. Platforms: May be a platform name of a platform from the configs/platforms directory or 'all' to generate dependencies for all platforms. DOCOPT
Instance Method Summary collapse
- #get_platforms(options) ⇒ Object
- #get_projects(options) ⇒ Object
- #options_translate(docopt_options) ⇒ Object
- #parse(argv) ⇒ Object
- #run(options) ⇒ Object
Methods inherited from Vanagon::CLI
Instance Method Details
#get_platforms(options) ⇒ Object
76 77 78 79 80 81 82 83 84 85 |
# File 'lib/vanagon/cli/dependencies.rb', line 76 def get_platforms() platforms = [:platforms].split(',') if platforms.include?('all') Dir.children(platforms_directory).map do |platform| File.basename(platform, File.extname(platform)) end else platforms end end |
#get_projects(options) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/vanagon/cli/dependencies.rb', line 57 def get_projects() platforms_directory = File.join([:configdir], 'platforms') projects_directory = File.join([:configdir], 'projects') unless Dir.exist?(projects_directory) && Dir.exist?(platforms_directory) VanagonLogger.error "Path to #{platforms_directory} or #{projects_directory} not found." exit 1 end projects = [[:project_name]] if projects.include?('all') Dir.children(projects_directory).map do |project| File.basename(project, File.extname(project)) end else projects end end |
#options_translate(docopt_options) ⇒ Object
87 88 89 90 91 92 93 94 95 96 |
# File 'lib/vanagon/cli/dependencies.rb', line 87 def () translations = { '--verbose' => :verbose, '--workdir' => :workdir, '--configdir' => :configdir, '<project-name>' => :project_name, '<platforms>' => :platforms } return .map { |k, v| [translations[k], v] }.to_h end |
#parse(argv) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/vanagon/cli/dependencies.rb', line 24 def parse(argv) Docopt.docopt(DOCUMENTATION, { argv: argv }) rescue Docopt::Exit => e VanagonLogger.error e. exit 1 end |
#run(options) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/vanagon/cli/dependencies.rb', line 31 def run() projects = get_projects() platforms = get_platforms() failures = [] projects.each do |project| platforms.each do |platform| begin artifact = Vanagon::Driver.new(platform, project, ) artifact.dependencies rescue RuntimeError => e failures.push("#{project}, #{platform}: #{e}") end end end unless failures.empty? VanagonLogger.info "Failed to generate dependencies for the following:" failures.each do |failure| VanagonLogger.info failure end end VanagonLogger.info "Finished generating dependencies" end |