lib/autoproj/cli/show.rb in autoproj-2.0.0.rc40 vs lib/autoproj/cli/show.rb in autoproj-2.0.0.rc41

- old
+ new

@@ -18,41 +18,48 @@ finalize_setup(user_selection, recursive: recursive, non_imported_packages: :return) else source_packages, osdep_packages = Array.new, Array.new end - if package_set_names.empty? && source_packages.empty? && osdep_packages.empty? + all_matching_osdeps = osdep_packages.map { |pkg| [pkg, true] } + user_selection.each do |sel| + if !osdep_packages.include?(sel) && ws.os_package_resolver.all_definitions.has_key?(sel) + all_matching_osdeps << [sel, false] + end + end + + if package_set_names.empty? && source_packages.empty? && all_matching_osdeps.empty? Autoproj.error "no package set, packages or OS packages match #{user_selection.join(" ")}" return - elsif !source_packages.empty? || !osdep_packages.empty? + elsif !source_packages.empty? || !all_matching_osdeps.empty? load_all_available_package_manifests revdeps = ws.manifest.compute_revdeps end package_set_names = package_set_names.sort source_packages = source_packages.sort - osdep_packages = osdep_packages.sort + all_matching_osdeps = all_matching_osdeps.sort_by { |name, _| name } if short package_set_names.each do |name| puts "pkg_set #{name}" end source_packages.each do |name| puts "pkg #{name}" end - osdep_packages.each do |name| - puts "osdep #{name}" + all_matching_osdeps.each do |name, sel| + puts "osdep #{name} (#{sel ? "not selected" : "selected"})" end else package_set_names.each do |pkg_set_name| display_package_set(pkg_set_name) end source_packages.each do |pkg_name| display_source_package(pkg_name, default_packages, revdeps, env: env) end - osdep_packages.each do |pkg_name| - display_osdep_package(pkg_name, default_packages, revdeps) + all_matching_osdeps.each do |pkg_name, selected| + display_osdep_package(pkg_name, default_packages, revdeps, selected) end end end def display_package_set(name, package_per_line: 8) @@ -158,15 +165,34 @@ end end end end - def display_osdep_package(pkg_name, default_packages, revdeps) + def display_osdep_package(pkg_name, default_packages, revdeps, selected) puts Autoproj.color("the osdep '#{pkg_name}'", :bold) - ws.os_package_resolver.resolve_os_packages([pkg_name]).each do |manager_name, packages| - puts " #{manager_name}: #{packages.map { |*subnames| subnames.join(" ") }.join(", ")}" + begin + ws.os_package_resolver.resolve_os_packages([pkg_name]).each do |manager_name, packages| + puts " #{manager_name}: #{packages.map { |*subnames| subnames.join(" ") }.join(", ")}" + end + rescue MissingOSDep => e + puts " #{e.message}" end + if !selected + puts " is present, but won't be used by autoproj for '#{pkg_name}'" + end + + entries = ws.os_package_resolver.all_definitions[pkg_name] + puts " #{entries.inject(0) { |c, (files, _)| c + files.size }} matching entries:" + entries.each do |files, entry| + puts " in #{files.join(", ")}:" + lines = YAML.dump(entry).split("\n") + lines[0] = lines[0].gsub(/---\s*/, '') + if lines[0].empty? + lines.shift + end + puts " " + lines.join("\n ") + end display_common_information(pkg_name, default_packages, revdeps) end def display_common_information(pkg_name, default_packages, revdeps) if default_packages.include?(pkg_name)