class Autoproj::CLI::Version

Public Instance Methods

collect_dependencies(dependency, known_dependencies: {}) click to toggle source

Collect the dependencies of a given dependency @param [Gem::Dependency] dependency a gem depencency @param [Array<Gem::Dependency] list of already known dependencies

@return [Array<Gem::Dependency>] all known dependencies

# File lib/autoproj/cli/version.rb, line 39
def collect_dependencies(dependency, known_dependencies: {})
    dep_spec = dependency.matching_specs
    return known_dependencies if dep_spec.empty?

    dep_spec = dep_spec.first
    known_dependencies[dep_spec.name] = dep_spec.version
    dep_spec.dependencies.each do |dep|
        unless known_dependencies.has_key?(dep.name)
            collect_dependencies(dep, known_dependencies: known_dependencies)
        end
    end
    known_dependencies
end
run(args, options = Hash.new) click to toggle source

List the version of autoproj and optionally include the installed dependencies with information about the requirement and the actual used version

# File lib/autoproj/cli/version.rb, line 10
def run(args, options = Hash.new)
    puts "autoproj version: #{Autoproj::VERSION}"
    return unless options[:deps]

    dependency = Gem::Deprecate.skip_during do
        Gem::Dependency.new "autoproj", Autoproj::VERSION
    end
    autoproj_spec = dependency.matching_specs
    return if autoproj_spec.empty?

    installed_deps = collect_dependencies(dependency)
    puts "    specified dependencies:"
    autoproj_spec.first.dependencies.each do |dep|
        puts "        #{dep}: #{installed_deps[dep.name] || 'n/a'}"
        installed_deps.delete(dep.name)
    end
    puts "    implicit dependencies:"
    installed_deps.keys.sort.each do |name|
        unless name == "autoproj"
            puts "        #{name}: #{installed_deps[name]}"
        end
    end
end