diff --git a/dnf5/commands/download/download.cpp b/dnf5/commands/download/download.cpp index 48e3c7c5a9..6c5cd520b0 100644 --- a/dnf5/commands/download/download.cpp +++ b/dnf5/commands/download/download.cpp @@ -158,6 +158,7 @@ void DownloadCommand::set_argument_parser() { cmd.register_named_arg(resolve); cmd.register_named_arg(alldeps); create_destdir_option(*this); + auto skip_unavailable = std::make_unique(*this); cmd.register_named_arg(srpm); cmd.register_named_arg(url); cmd.register_named_arg(urlprotocol); @@ -212,6 +213,14 @@ void DownloadCommand::run() { pkg_query.filter_arch(std::vector(arch_option.begin(), arch_option.end())); } + if (!pkg_query.size() && !ctx.get_base().get_config().get_skip_unavailable_option().get_value()) { + // User tried `dnf5 download non-sense` or `dnf download non-sense-wildcard*` + throw libdnf5::cli::CommandExitError( + 1, + M_("No package \"{}\" available; You might want to use --skip-unavailable option."), + option->get_value()); + } + for (const auto & pkg : pkg_query) { download_pkgs.insert(create_nevra_pkg_pair(pkg)); diff --git a/doc/commands/download.8.rst b/doc/commands/download.8.rst index 07a67e398f..bd0e562332 100644 --- a/doc/commands/download.8.rst +++ b/doc/commands/download.8.rst @@ -50,6 +50,9 @@ Options ``--destdir=`` | Set directory used for downloading packages to. Default location is to the current working directory. +``--skip-unavailable`` + | Allow skipping packages that are not available in repositories. All available packages will be downloaded. + ``--srpm`` | Download the source rpm. Enables source repositories of all enabled binary repositories.