|
|
@@ -283,6 +283,49 @@ struct cli_catalog { |
|
|
|
} |
|
|
|
} list{*this}; |
|
|
|
|
|
|
|
struct { |
|
|
|
cli_catalog& parent; |
|
|
|
args::Command cmd{parent.cat_group, |
|
|
|
"show", |
|
|
|
"Show information about a single package in the catalog"}; |
|
|
|
|
|
|
|
catalog_path_flag cat_path{cmd}; |
|
|
|
args::Positional<std::string> ident{cmd, |
|
|
|
"package-id", |
|
|
|
"A package identifier to show", |
|
|
|
args::Options::Required}; |
|
|
|
|
|
|
|
void print_remote_info(const dds::git_remote_listing& git) { |
|
|
|
std::cout << "Git URL: " << git.url << '\n'; |
|
|
|
std::cout << "Git Ref: " << git.ref << '\n'; |
|
|
|
if (git.auto_lib) { |
|
|
|
std::cout << "Auto-lib: " << git.auto_lib->name << "/" << git.auto_lib->namespace_ |
|
|
|
<< '\n'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
int run() { |
|
|
|
auto pk_id = dds::package_id::parse(ident.Get()); |
|
|
|
auto cat = cat_path.open(); |
|
|
|
auto pkg = cat.get(pk_id); |
|
|
|
if (!pkg) { |
|
|
|
spdlog::error("No package '{}' in the catalog", pk_id.to_string()); |
|
|
|
return 1; |
|
|
|
} |
|
|
|
std::cout << "Name: " << pkg->ident.name << '\n' |
|
|
|
<< "Version: " << pkg->ident.version << '\n'; |
|
|
|
|
|
|
|
for (const auto& dep : pkg->deps) { |
|
|
|
std::cout << "Depends: " << dep.to_string() << '\n'; |
|
|
|
} |
|
|
|
|
|
|
|
std::visit([&](const auto& remote) { print_remote_info(remote); }, pkg->remote); |
|
|
|
std::cout << "Description:\n " << pkg->description << '\n'; |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
} show{*this}; |
|
|
|
|
|
|
|
int run() { |
|
|
|
if (create.cmd) { |
|
|
|
return create.run(); |
|
|
@@ -294,6 +337,8 @@ struct cli_catalog { |
|
|
|
return add.run(); |
|
|
|
} else if (list.cmd) { |
|
|
|
return list.run(); |
|
|
|
} else if (show.cmd) { |
|
|
|
return show.run(); |
|
|
|
} else { |
|
|
|
assert(false); |
|
|
|
std::terminate(); |