@@ -0,0 +1,33 @@ | |||
#include "../options.hpp" | |||
#include "./pkg_repo_err_handle.hpp" | |||
#include <dds/pkg/db.hpp> | |||
#include <dds/pkg/remote.hpp> | |||
#include <neo/sqlite3/iter_tuples.hpp> | |||
namespace dds::cli::cmd { | |||
static int _pkg_repo_ls(const options& opts) { | |||
auto pkg_db = opts.open_catalog(); | |||
neo::sqlite3::database_ref db = pkg_db.database(); | |||
auto st = db.prepare("SELECT name, remote_url, db_mtime FROM dds_pkg_remotes"); | |||
auto tups = neo::sqlite3::iter_tuples<std::string, std::string, std::optional<std::string>>(st); | |||
for (auto [name, remote_url, mtime] : tups) { | |||
fmt::print("Remote '{}':\n", name); | |||
fmt::print(" Updates URL: {}\n", remote_url); | |||
if (mtime) { | |||
fmt::print(" Last Modified: {}\n", *mtime); | |||
} | |||
fmt::print("\n"); | |||
} | |||
return 0; | |||
} | |||
int pkg_repo_ls(const options& opts) { | |||
return handle_pkg_repo_remote_errors([&] { return _pkg_repo_ls(opts); }); | |||
} | |||
} // namespace dds::cli::cmd |
@@ -21,6 +21,7 @@ command pkg_import; | |||
command pkg_ls; | |||
command pkg_repo_add; | |||
command pkg_repo_update; | |||
command pkg_repo_ls; | |||
command repoman_add; | |||
command repoman_import; | |||
command repoman_init; | |||
@@ -57,6 +58,8 @@ int dispatch_main(const options& opts) noexcept { | |||
return cmd::pkg_repo_add(opts); | |||
case cli_pkg_repo_subcommand::update: | |||
return cmd::pkg_repo_update(opts); | |||
case cli_pkg_repo_subcommand::ls: | |||
return cmd::pkg_repo_ls(opts); | |||
case cli_pkg_repo_subcommand::_none_:; | |||
} | |||
neo::unreachable(); |
@@ -296,6 +296,10 @@ struct setup { | |||
.name = "update", | |||
.help = "Update package repository information", | |||
}); | |||
pkg_repo_grp.add_parser({ | |||
.name = "ls", | |||
.help = "List locally registered package repositories", | |||
}); | |||
} | |||
void setup_pkg_repo_add_cmd(argument_parser& pkg_repo_add_cmd) noexcept { |
@@ -55,6 +55,7 @@ enum class cli_pkg_repo_subcommand { | |||
_none_, | |||
add, | |||
update, | |||
ls, | |||
}; | |||
/** |
@@ -1,3 +1,4 @@ | |||
from dds_ci.dds import DDSWrapper | |||
from dds_ci.testing import Project, RepoFixture | |||
@@ -20,3 +21,9 @@ def test_pkg_get(http_repo: RepoFixture, tmp_project: Project) -> None: | |||
tmp_project.dds.pkg_get('neo-sqlite3@0.3.0') | |||
assert tmp_project.root.joinpath('neo-sqlite3@0.3.0').is_dir() | |||
assert tmp_project.root.joinpath('neo-sqlite3@0.3.0/package.jsonc').is_file() | |||
def test_pkg_repo(http_repo: RepoFixture, tmp_project: Project) -> None: | |||
dds = tmp_project.dds | |||
dds.repo_add(http_repo.url) | |||
dds.run(['pkg', 'repo', 'ls']) |