From 6609ee95569a94ef584f951f2f8131cfe1b6de4c Mon Sep 17 00:00:00 2001 From: Dominik Heidler Date: Thu, 5 May 2011 15:03:09 +0200 Subject: [PATCH] add option to set/change gpgcheck flag for repos (bnc#524787) --- src/Zypper.cc | 20 +++++++++++++++++--- src/repos.cc | 36 +++++++++++++++++++++++++++++++++--- src/repos.h | 6 ++++-- 3 files changed, 54 insertions(+), 8 deletions(-) diff --git a/src/Zypper.cc b/src/Zypper.cc index 6c26bbc..8ccac52 100644 --- a/src/Zypper.cc +++ b/src/Zypper.cc @@ -1316,6 +1316,8 @@ void Zypper::processCommandOptions() {"name", required_argument, 0, 'n'}, {"keep-packages", no_argument, 0, 'k'}, {"no-keep-packages", no_argument, 0, 'K'}, + {"gpgcheck", no_argument, 0, 'g'}, + {"no-gpgcheck", no_argument, 0, 'G'}, {"refresh", no_argument, 0, 'f'}, {0, 0, 0, 0} }; @@ -1337,6 +1339,8 @@ void Zypper::processCommandOptions() "-n, --name Specify descriptive name for the repository.\n" "-k, --keep-packages Enable RPM files caching.\n" "-K, --no-keep-packages Disable RPM files caching.\n" + "-g, --gpgcheck Enable GPG check for this repository.\n" + "-G, --no-gpgcheck Disable GPG check for this repository.\n" "-f, --refresh Enable autorefresh of the repository.\n" ), "yast2, rpm-md, plaindir"); break; @@ -1453,6 +1457,8 @@ void Zypper::processCommandOptions() {"priority", required_argument, 0, 'p'}, {"keep-packages", no_argument, 0, 'k'}, {"no-keep-packages", no_argument, 0, 'K'}, + {"gpgcheck", no_argument, 0, 'g'}, + {"no-gpgcheck", no_argument, 0, 'G'}, {"all", no_argument, 0, 'a' }, {"local", no_argument, 0, 'l' }, {"remote", no_argument, 0, 't' }, @@ -1478,6 +1484,8 @@ void Zypper::processCommandOptions() "-p, --priority Set priority of the repository.\n" "-k, --keep-packages Enable RPM files caching.\n" "-K, --no-keep-packages Disable RPM files caching.\n" + "-g, --gpgcheck Enable GPG check for this repository.\n" + "-G, --no-gpgcheck Disable GPG check for this repository.\n" "\n" "-a, --all Apply changes to all repositories.\n" "-l, --local Apply changes to all local repositories.\n" @@ -2863,12 +2871,18 @@ void Zypper::doCommand() else if (copts.count("no-keep-packages")) keep_pkgs = false; + TriBool gpgCheck; + if (copts.count("gpgcheck")) + gpgCheck = true; + else if (copts.count("no-gpgcheck")) + gpgCheck = false; + try { // add repository specified in .repo file if (copts.count("repo")) { - add_repo_from_file(*this,copts["repo"].front(), enabled, autorefresh, keep_pkgs); + add_repo_from_file(*this,copts["repo"].front(), enabled, autorefresh, keep_pkgs, gpgCheck); return; } @@ -2916,7 +2930,7 @@ void Zypper::doCommand() else { initRepoManager(); - add_repo_from_file(*this,_arguments[0], enabled, autorefresh, keep_pkgs); + add_repo_from_file(*this,_arguments[0], enabled, autorefresh, keep_pkgs, gpgCheck); break; } case 2: @@ -2952,7 +2966,7 @@ void Zypper::doCommand() init_target(*this); add_repo_by_url( - *this, url, _arguments[1]/*alias*/, type, enabled, autorefresh, keep_pkgs); + *this, url, _arguments[1]/*alias*/, type, enabled, autorefresh, keep_pkgs, gpgCheck); return; } } diff --git a/src/repos.cc b/src/repos.cc index 0e9b5b1..b85d54f 100644 --- a/src/repos.cc +++ b/src/repos.cc @@ -1628,6 +1628,8 @@ void add_repo(Zypper & zypper, RepoInfo & repo) s << _("Enabled") << ": " << (repo.enabled() ? _("Yes") : _("No")) << endl; // TranslatorExplanation used as e.g. "Autorefresh: Yes" s << _("Autorefresh") << ": " << (repo.autorefresh() ? _("Yes") : _("No")) << endl; + // TranslatorExplanation used as e.g. "GPG check: Yes" + s << _("GPG check") << ": " << (repo.gpgCheck() ? _("Yes") : _("No")) << endl; if (!repo.baseUrlsEmpty()) { @@ -1667,7 +1669,7 @@ void add_repo(Zypper & zypper, RepoInfo & repo) void add_repo_by_url( Zypper & zypper, const zypp::Url & url, const string & alias, const string & type, - TriBool enabled, TriBool autorefresh, TriBool keepPackages) + TriBool enabled, TriBool autorefresh, TriBool keepPackages, TriBool gpgCheck) { MIL << "going to add repository by url (alias=" << alias << ", url=" << url << ")" << endl; @@ -1696,6 +1698,9 @@ void add_repo_by_url( Zypper & zypper, if ( !indeterminate(keepPackages) ) repo.setKeepPackages(keepPackages); + if ( !indeterminate(gpgCheck) ) + repo.setGpgCheck(gpgCheck); + add_repo(zypper, repo); } @@ -1703,7 +1708,7 @@ void add_repo_by_url( Zypper & zypper, void add_repo_from_file( Zypper & zypper, const std::string & repo_file_url, TriBool enabled, - TriBool autorefresh, TriBool keepPackages) + TriBool autorefresh, TriBool keepPackages, TriBool gpgCheck) { Url url = make_url(repo_file_url); if (!url.isValid()) @@ -1779,6 +1784,9 @@ void add_repo_from_file( Zypper & zypper, if ( !indeterminate(keepPackages) ) repo.setKeepPackages(keepPackages); + if ( !indeterminate(gpgCheck) ) + repo.setGpgCheck(gpgCheck); + MIL << "to-be-added: enabled: " << repo.enabled() << " autorefresh: " << repo.autorefresh() << endl; add_repo(zypper, repo); @@ -1942,6 +1950,10 @@ void modify_repo(Zypper & zypper, const string & alias) zypper, "keep-packages", "no-keep-packages"); DBG << "keepPackages = " << keepPackages << endl; + tribool gpgCheck = get_boolean_option( + zypper, "gpgcheck", "no-gpgcheck"); + DBG << "gpgCheck = " << gpgCheck << endl; + try { RepoManager & manager = zypper.repoManager(); @@ -1950,6 +1962,7 @@ void modify_repo(Zypper & zypper, const string & alias) bool changed_autoref = false; bool changed_prio = false; bool changed_keeppackages = false; + bool changed_gpgcheck = false; if (!indeterminate(enable)) { @@ -1972,6 +1985,13 @@ void modify_repo(Zypper & zypper, const string & alias) repo.setKeepPackages(keepPackages); } + if (!indeterminate(gpgCheck)) + { + if (gpgCheck != repo.gpgCheck()) + changed_gpgcheck = true; + repo.setGpgCheck(gpgCheck); + } + long long prio = 0; parsed_opts::const_iterator tmp1; if ((tmp1 = zypper.cOpts().find("priority")) != zypper.cOpts().end()) @@ -2009,7 +2029,7 @@ void modify_repo(Zypper & zypper, const string & alias) } if (chnaged_enabled || changed_autoref || changed_prio - || changed_keeppackages || !name.empty()) + || changed_keeppackages || changed_gpgcheck || !name.empty()) { manager.modifyRepository(alias, repo); @@ -2043,6 +2063,16 @@ void modify_repo(Zypper & zypper, const string & alias) _("RPM files caching has been disabled for repository '%s'.")) % alias)); } + if (changed_gpgcheck) + { + if (repo.gpgCheck()) + zypper.out().info(boost::str(format( + _("GPG check has been enabled for repository '%s'.")) % alias)); + else + zypper.out().info(boost::str(format( + _("GPG check has been disabled for repository '%s'.")) % alias)); + } + if (changed_prio) { zypper.out().info(boost::str(format( diff --git a/src/repos.h b/src/repos.h index 037e3ee..be5de6c 100644 --- a/src/repos.h +++ b/src/repos.h @@ -113,7 +113,8 @@ void add_repo_by_url(Zypper & zypper, const std::string & type = "", zypp::TriBool enabled = boost::indeterminate, zypp::TriBool autorefresh = boost::indeterminate, - zypp::TriBool keepPackages = boost::indeterminate); + zypp::TriBool keepPackages = boost::indeterminate, + zypp::TriBool gpgCheck = boost::indeterminate); /** * Add repository specified in given repo file on \a repo_file_url. All repos @@ -128,7 +129,8 @@ void add_repo_from_file(Zypper & zypper, const std::string & repo_file_url, zypp::TriBool enabled = boost::indeterminate, zypp::TriBool autorefresh = boost::indeterminate, - zypp::TriBool keepPackages = boost::indeterminate); + zypp::TriBool keepPackages = boost::indeterminate, + zypp::TriBool gpgCheck = boost::indeterminate); /** -- 2.7.4