From 71537cc4108beb284a8fc394147e4cab73d6b705 Mon Sep 17 00:00:00 2001 From: Sandrine Pataut Date: Tue, 21 Jan 2025 16:54:42 +0100 Subject: [PATCH] add md5 subcommand --- libmamba/src/api/list.cpp | 19 ++++++++++++++++--- micromamba/src/list.cpp | 5 +++++ micromamba/tests/test_create.py | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/libmamba/src/api/list.cpp b/libmamba/src/api/list.cpp index 01a5300a20..43ce6f8f1d 100644 --- a/libmamba/src/api/list.cpp +++ b/libmamba/src/api/list.cpp @@ -26,11 +26,12 @@ namespace mamba bool no_pip; bool reverse; bool explicit_; + bool md5; }; struct formatted_pkg { - std::string name, version, build, channel, url; + std::string name, version, build, channel, url, md5; }; bool compare_alphabetically(const formatted_pkg& a, const formatted_pkg& b) @@ -199,6 +200,7 @@ namespace mamba formatted_pkgs.version = package.second.version; formatted_pkgs.build = package.second.build_string; formatted_pkgs.url = package.second.package_url; + formatted_pkgs.md5 = package.second.md5; packages.push_back(formatted_pkgs); } } @@ -210,9 +212,19 @@ namespace mamba // format and print table if (options.explicit_) { - for (auto p : packages) + if (options.md5) { - std::cout << p.url << std::endl; + for (auto p : packages) + { + std::cout << p.url << "#" << p.md5 << std::endl; + } + } + else + { + for (auto p : packages) + { + std::cout << p.url << std::endl; + } } } else @@ -258,6 +270,7 @@ namespace mamba options.no_pip = config.at("no_pip").value(); options.reverse = config.at("reverse").value(); options.explicit_ = config.at("explicit").value(); + options.md5 = config.at("md5").value(); auto channel_context = ChannelContext::make_conda_compatible(config.context()); detail::list_packages(config.context(), regex, channel_context, std::move(options)); diff --git a/micromamba/src/list.cpp b/micromamba/src/list.cpp index 354da91cdb..5d6776f7ec 100644 --- a/micromamba/src/list.cpp +++ b/micromamba/src/list.cpp @@ -45,6 +45,11 @@ init_list_parser(CLI::App* subcom, Configuration& config) )); subcom->add_flag("--explicit", explicit_.get_cli_config(), explicit_.description()); + auto& md5 = config.insert( + Configurable("md5", false).group("cli").description("Add MD5 hashsum when using --explicit") + ); + subcom->add_flag("--md5", md5.get_cli_config(), md5.description()); + // TODO: implement this in libmamba/list.cpp /*auto& canonical = config.insert(Configurable("canonical", false) diff --git a/micromamba/tests/test_create.py b/micromamba/tests/test_create.py index 0cbb0c3787..56b0089c4d 100644 --- a/micromamba/tests/test_create.py +++ b/micromamba/tests/test_create.py @@ -1675,6 +1675,7 @@ def test_glob_in_build_string(monkeypatch, tmp_path): for package in out["actions"]["FETCH"] ) + def test_non_url_encoding(tmp_path): # Non-regression test for https://github.com/mamba-org/mamba/issues/3737 env_prefix = tmp_path / "env-non_url_encoding" @@ -1692,4 +1693,3 @@ def test_non_url_encoding(tmp_path): non_encoded_url_start = "https://conda.anaconda.org/conda-forge/linux-64/x264-1!" out = helpers.run_env("export", "-p", env_prefix, "--explicit") assert non_encoded_url_start in out -