From 0ffe7a9f9f7830d321127c19e7979ca28a08b5ea Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Wed, 1 May 2013 23:51:23 +0200 Subject: [PATCH] [equo] implement "equo repo rename" command --- client/doc/mansrc/equo-repo.1.txt | 5 +- client/po/entropy.pot | 223 ++++++++++++++++-------------- client/solo/commands/repo.py | 98 ++++++++++++- 3 files changed, 223 insertions(+), 103 deletions(-) diff --git a/client/doc/mansrc/equo-repo.1.txt b/client/doc/mansrc/equo-repo.1.txt index 5e9e13f7b..e70af413e 100644 --- a/client/doc/mansrc/equo-repo.1.txt +++ b/client/doc/mansrc/equo-repo.1.txt @@ -11,7 +11,7 @@ equo-repo - manage repositories SYNOPSIS -------- -equo repo [-h] {enable,disable,add,remove,list,mirrorsort,merge} ... +equo repo [-h] {enable,disable,add,remove,rename,list,mirrorsort,merge} ... INTRODUCTION @@ -44,6 +44,9 @@ ACTION *remove*:: remove a repository +*rename*:: + rename a repository + *list*:: list active repositories diff --git a/client/po/entropy.pot b/client/po/entropy.pot index 55fc35e30..2a6bfd6ac 100644 --- a/client/po/entropy.pot +++ b/client/po/entropy.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-30 12:50+0000\n" +"POT-Creation-Date: 2013-05-01 23:51+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -29,8 +29,8 @@ msgstr "" #: ../../lib/entropy/db/sqlite.py:2103 ../../lib/entropy/db/sqlite.py:2207 #: ../../lib/entropy/db/sqlite.py:2315 ../../lib/entropy/db/sqlite.py:2328 #: ../../lib/entropy/db/sql.py:5437 ../../lib/entropy/db/sql.py:5450 -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2583 -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2721 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2610 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2748 #: ../../lib/entropy/client/interfaces/client.py:950 msgid "ATTENTION" msgstr "" @@ -52,8 +52,8 @@ msgid "Spm Unique Identifier not found for" msgstr "" #: ../../lib/entropy/db/skel.py:1662 -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:924 -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:944 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:945 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:971 msgid "SPM" msgstr "" @@ -71,7 +71,7 @@ msgid "Entropy" msgstr "" #: ../../lib/entropy/db/skel.py:1684 -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:925 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:946 msgid "action" msgstr "" @@ -109,7 +109,7 @@ msgid "has been installed." msgstr "" #: ../../lib/kswitch/__init__.py:120 -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3358 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3385 #: ../../lib/entropy/client/interfaces/db.py:438 #: ../../lib/entropy/client/interfaces/db.py:625 #: ../../lib/entropy/client/interfaces/db.py:1986 @@ -247,141 +247,141 @@ msgstr "" msgid "Reloading Portage modules" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:945 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:972 msgid "updating metadata" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:1112 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:1139 msgid "error" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:1114 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:1141 #: ../../lib/entropy/client/interfaces/package.py:692 #: ../../lib/entropy/client/interfaces/package.py:1373 msgid "not found" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2542 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2569 msgid "package not available on system" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2551 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2578 msgid "repackaging" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2563 -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2758 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2590 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2785 msgid "WARNING" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2564 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2591 msgid "Cannot complete quickpkg for atom" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2566 -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2761 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2593 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2788 msgid "do it manually" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2584 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2611 msgid "package files rebuild did not run properly" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2585 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2612 msgid "Please update packages manually" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2722 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2749 msgid "forcing package updates" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2723 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2750 msgid "Syncing with" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2759 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:2786 msgid "Cannot complete quickpkg for atoms" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3115 -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:4798 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3142 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:4824 #: ../../lib/entropy/client/interfaces/trigger.py:286 #: ../../lib/entropy/client/interfaces/trigger.py:549 msgid "QA" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3116 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3143 msgid "Cannot update Portage package metadata" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3142 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3169 msgid "SPM uid update error" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3211 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3238 msgid "Cannot update SPM installed pkgs file" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3304 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3331 msgid "Portage world file is corrupted" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3359 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3386 msgid "preserved libraries have been found on system" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3500 -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3650 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3527 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3677 msgid "does not exist" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3500 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3527 msgid "Overwriting" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3546 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3573 msgid "variable differs" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3546 -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3635 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3573 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3662 msgid "Updating" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3561 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3588 msgid "updating critical variables" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3635 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3662 msgid "differs" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3650 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3677 msgid "Reverting" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3665 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3692 msgid "Skipping configuration files update, you are not root." msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3926 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:3952 msgid "Error calculating dependencies" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:4485 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:4511 msgid "not supported" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:4486 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:4512 msgid "Probably Portage API has changed" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:4549 -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:4642 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:4575 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:4668 msgid "IOError while reading" msgstr "" -#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:4799 +#: ../../lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py:4825 msgid "illegal Entropy package tag in ebuild" msgstr "" @@ -1438,15 +1438,15 @@ msgstr "" msgid "Checking %s" msgstr "" -#: ../../lib/entropy/client/interfaces/dep.py:2155 +#: ../../lib/entropy/client/interfaces/dep.py:2186 msgid "Sorting dependencies" msgstr "" -#: ../../lib/entropy/client/interfaces/dep.py:2359 +#: ../../lib/entropy/client/interfaces/dep.py:2391 msgid "Calculating inverse dependencies for" msgstr "" -#: ../../lib/entropy/client/interfaces/dep.py:2982 +#: ../../lib/entropy/client/interfaces/dep.py:3041 msgid "Calculating updates" msgstr "" @@ -1873,7 +1873,8 @@ msgstr "" #: ../../client/solo/utils.py:184 ../../client/solo/utils.py:327 #: ../../client/solo/utils.py:328 ../../client/solo/utils.py:424 -#: ../../client/solo/utils.py:426 ../../client/solo/commands/repo.py:460 +#: ../../client/solo/utils.py:426 ../../client/solo/commands/repo.py:501 +#: ../../client/solo/commands/repo.py:556 msgid "N/A" msgstr "" @@ -2164,7 +2165,7 @@ msgstr "" #: ../../client/solo/commands/security.py:69 #: ../../client/solo/commands/cache.py:61 ../../client/solo/commands/ugc.py:72 #: ../../client/solo/commands/ugc.py:105 ../../client/solo/commands/ugc.py:146 -#: ../../client/solo/commands/repo.py:66 ../../client/solo/commands/conf.py:76 +#: ../../client/solo/commands/repo.py:68 ../../client/solo/commands/conf.py:76 #: ../../client/solo/commands/rescue.py:72 ../kernel-switcher:48 msgid "available commands" msgstr "" @@ -2528,6 +2529,7 @@ msgid "Matched" msgstr "" #: ../../client/solo/commands/query.py:572 +#: ../../client/solo/commands/repo.py:120 msgid "from repository" msgstr "" @@ -3159,7 +3161,7 @@ msgid "search keyword" msgstr "" #: ../../client/solo/commands/search.py:72 -#: ../../client/solo/commands/repo.py:120 +#: ../../client/solo/commands/repo.py:133 #: ../../client/solo/commands/match.py:86 msgid "quiet output, for scripting purposes" msgstr "" @@ -3292,10 +3294,10 @@ msgstr "" #: ../../client/solo/commands/ugc.py:77 ../../client/solo/commands/ugc.py:87 #: ../../client/solo/commands/ugc.py:99 ../../client/solo/commands/ugc.py:140 -#: ../../client/solo/commands/repo.py:72 ../../client/solo/commands/repo.py:80 -#: ../../client/solo/commands/repo.py:87 -#: ../../client/solo/commands/repo.py:110 -#: ../../client/solo/commands/repo.py:127 +#: ../../client/solo/commands/repo.py:74 ../../client/solo/commands/repo.py:82 +#: ../../client/solo/commands/repo.py:89 +#: ../../client/solo/commands/repo.py:112 +#: ../../client/solo/commands/repo.py:140 msgid "repository name" msgstr "" @@ -3596,172 +3598,191 @@ msgstr "" msgid "this help" msgstr "" -#: ../../client/solo/commands/repo.py:65 -#: ../../client/solo/commands/repo.py:637 +#: ../../client/solo/commands/repo.py:67 +#: ../../client/solo/commands/repo.py:733 msgid "manage repositories" msgstr "" -#: ../../client/solo/commands/repo.py:69 +#: ../../client/solo/commands/repo.py:71 msgid "enable repositories" msgstr "" -#: ../../client/solo/commands/repo.py:77 +#: ../../client/solo/commands/repo.py:79 msgid "disable repositories" msgstr "" -#: ../../client/solo/commands/repo.py:85 +#: ../../client/solo/commands/repo.py:87 msgid "add a repository" msgstr "" -#: ../../client/solo/commands/repo.py:90 +#: ../../client/solo/commands/repo.py:92 msgid "repository description" msgstr "" -#: ../../client/solo/commands/repo.py:94 +#: ../../client/solo/commands/repo.py:96 msgid "repository database URL" msgstr "" -#: ../../client/solo/commands/repo.py:98 +#: ../../client/solo/commands/repo.py:100 msgid "repository packages URL" msgstr "" -#: ../../client/solo/commands/repo.py:102 +#: ../../client/solo/commands/repo.py:104 msgid "repository compression format" msgstr "" -#: ../../client/solo/commands/repo.py:107 +#: ../../client/solo/commands/repo.py:109 msgid "remove a repository" msgstr "" -#: ../../client/solo/commands/repo.py:115 +#: ../../client/solo/commands/repo.py:117 +msgid "rename a repository" +msgstr "" + +#: ../../client/solo/commands/repo.py:123 +msgid "to repository" +msgstr "" + +#: ../../client/solo/commands/repo.py:128 msgid "list active repositories" msgstr "" -#: ../../client/solo/commands/repo.py:124 +#: ../../client/solo/commands/repo.py:137 msgid "reorder mirrors basing on response time" msgstr "" -#: ../../client/solo/commands/repo.py:130 +#: ../../client/solo/commands/repo.py:143 msgid "simulate execution" msgstr "" -#: ../../client/solo/commands/repo.py:135 +#: ../../client/solo/commands/repo.py:148 msgid "merge content of source repository to destination" msgstr "" -#: ../../client/solo/commands/repo.py:137 +#: ../../client/solo/commands/repo.py:150 msgid "source repository" msgstr "" -#: ../../client/solo/commands/repo.py:139 +#: ../../client/solo/commands/repo.py:152 msgid "destination repository" msgstr "" -#: ../../client/solo/commands/repo.py:143 +#: ../../client/solo/commands/repo.py:156 msgid "also remove dependency conflicts during merge" msgstr "" -#: ../../client/solo/commands/repo.py:235 +#: ../../client/solo/commands/repo.py:248 msgid "repository already enabled" msgstr "" -#: ../../client/solo/commands/repo.py:244 -#: ../../client/solo/commands/repo.py:298 -#: ../../client/solo/commands/repo.py:500 +#: ../../client/solo/commands/repo.py:257 +#: ../../client/solo/commands/repo.py:311 +#: ../../client/solo/commands/repo.py:596 msgid "repository not available" msgstr "" -#: ../../client/solo/commands/repo.py:264 +#: ../../client/solo/commands/repo.py:277 msgid "repository enabled" msgstr "" -#: ../../client/solo/commands/repo.py:270 +#: ../../client/solo/commands/repo.py:283 msgid "cannot enable repository" msgstr "" -#: ../../client/solo/commands/repo.py:289 +#: ../../client/solo/commands/repo.py:302 msgid "repository already disabled" msgstr "" -#: ../../client/solo/commands/repo.py:320 -#: ../../client/solo/commands/repo.py:334 +#: ../../client/solo/commands/repo.py:333 +#: ../../client/solo/commands/repo.py:347 msgid "cannot disable repository" msgstr "" -#: ../../client/solo/commands/repo.py:328 +#: ../../client/solo/commands/repo.py:341 msgid "repository disabled" msgstr "" -#: ../../client/solo/commands/repo.py:356 +#: ../../client/solo/commands/repo.py:369 msgid "Repository id:" msgstr "" -#: ../../client/solo/commands/repo.py:359 +#: ../../client/solo/commands/repo.py:372 msgid "Description:" msgstr "" -#: ../../client/solo/commands/repo.py:362 +#: ../../client/solo/commands/repo.py:375 msgid "Repository format:" msgstr "" -#: ../../client/solo/commands/repo.py:366 +#: ../../client/solo/commands/repo.py:379 msgid "Packages URL:" msgstr "" -#: ../../client/solo/commands/repo.py:368 +#: ../../client/solo/commands/repo.py:381 msgid "Repository URL:" msgstr "" -#: ../../client/solo/commands/repo.py:390 +#: ../../client/solo/commands/repo.py:403 +#: ../../client/solo/commands/repo.py:529 msgid "repository added succesfully" msgstr "" -#: ../../client/solo/commands/repo.py:395 +#: ../../client/solo/commands/repo.py:408 +#: ../../client/solo/commands/repo.py:539 msgid "cannot add repository" msgstr "" -#: ../../client/solo/commands/repo.py:417 +#: ../../client/solo/commands/repo.py:430 +#: ../../client/solo/commands/repo.py:479 msgid "repository id not available" msgstr "" -#: ../../client/solo/commands/repo.py:437 +#: ../../client/solo/commands/repo.py:450 msgid "repository removed succesfully" msgstr "" -#: ../../client/solo/commands/repo.py:443 +#: ../../client/solo/commands/repo.py:456 msgid "cannot remove repository" msgstr "" -#: ../../client/solo/commands/repo.py:514 +#: ../../client/solo/commands/repo.py:487 +msgid "repository id already available" +msgstr "" + +#: ../../client/solo/commands/repo.py:495 +msgid "repository id is invalid" +msgstr "" + +#: ../../client/solo/commands/repo.py:610 msgid "mirror order:" msgstr "" -#: ../../client/solo/commands/repo.py:524 +#: ../../client/solo/commands/repo.py:620 msgid "mirrors sorted successfully" msgstr "" -#: ../../client/solo/commands/repo.py:543 -#: ../../client/solo/commands/repo.py:550 +#: ../../client/solo/commands/repo.py:639 +#: ../../client/solo/commands/repo.py:646 msgid "repository not found" msgstr "" -#: ../../client/solo/commands/repo.py:559 +#: ../../client/solo/commands/repo.py:655 msgid "repository cannot be source and destination" msgstr "" -#: ../../client/solo/commands/repo.py:567 +#: ../../client/solo/commands/repo.py:663 msgid "merging repositories" msgstr "" -#: ../../client/solo/commands/repo.py:583 +#: ../../client/solo/commands/repo.py:679 msgid "working on repository" msgstr "" -#: ../../client/solo/commands/repo.py:600 +#: ../../client/solo/commands/repo.py:696 msgid "merging package" msgstr "" -#: ../../client/solo/commands/repo.py:624 +#: ../../client/solo/commands/repo.py:720 msgid "done merging packages" msgstr "" diff --git a/client/solo/commands/repo.py b/client/solo/commands/repo.py index 61096b150..cf8330a6f 100644 --- a/client/solo/commands/repo.py +++ b/client/solo/commands/repo.py @@ -19,6 +19,8 @@ from entropy.output import darkred, red, brown, purple, teal, blue, \ darkgreen, bold from entropy.const import etpConst +import entropy.tools + from solo.commands.descriptor import SoloCommandDescriptor from solo.commands.command import SoloCommand from solo.utils import print_table @@ -111,6 +113,17 @@ Manage Entropy Repositories. remove_parser.set_defaults(func=self._remove) _commands.append("remove") + rename_parser = subparsers.add_parser("rename", + help=_("rename a repository")) + rename_parser.add_argument("from_repo", + metavar="", + help=_("from repository")) + rename_parser.add_argument("to_repo", + metavar="", + help=_("to repository")) + rename_parser.set_defaults(func=self._rename) + _commands.append("rename") + list_parser = subparsers.add_parser("list", help=_("list active repositories")) list_parser.set_defaults(func=self._list) @@ -194,7 +207,7 @@ Manage Entropy Repositories. elif command == "add": outcome.extend(["--desc", "--id", "--repo", "--pkg"]) - elif command == "remove": + elif command in ("remove", "rename"): settings = self._entropy_bashcomp().Settings() avail_repos = list(settings['repositories']['available']) excluded_repos = list(settings['repositories']['excluded']) @@ -444,6 +457,89 @@ Manage Entropy Repositories. level="warning", importance=1) return 1 + def _rename(self, entropy_client): + """ + Solo Repo Rename command. + """ + exit_st = 0 + settings = entropy_client.Settings() + excluded_repos = settings['repositories']['excluded'] + available_repos = settings['repositories']['available'] + repos = {} + repos.update(excluded_repos) + repos.update(available_repos) + + from_repo = self._nsargs.from_repo + to_repo = self._nsargs.to_repo + + if from_repo not in repos: + entropy_client.output( + "[%s] %s" % ( + purple(from_repo), + blue(_("repository id not available")),), + level="error", importance=1) + return 1 + + if to_repo in repos: + entropy_client.output( + "[%s] %s" % ( + purple(to_repo), + blue(_("repository id already available")),), + level="error", importance=1) + return 1 + + if not entropy.tools.validate_repository_id(to_repo): + entropy_client.output( + "[%s] %s" % ( + purple(to_repo), + blue(_("repository id is invalid")),), + level="error", importance=1) + return 1 + + current_product = settings['repositories']['product'] + current_branch = settings['repositories']['branch'] + desc = repos[from_repo].get('description', _("N/A")) + pkgs = repos[from_repo]['plain_packages'] + + plain_dbs = repos[from_repo]['plain_databases'] + dbs = [] + for meta in plain_dbs: + dbcformat = meta.get("dbcformat", "") + if dbcformat: + dbcformat = "#%s" % (dbcformat,) + dbs.append("%s%s" % (meta['uri'], dbcformat)) + + try: + repodata = settings._generate_repository_metadata( + to_repo, desc, pkgs, dbs, current_product, + current_branch) + except AttributeError as err: + entropy_client.output( + "[%s] %s" % ( + purple(to_repo), + err,), + level="error", importance=1) + return 1 + + added = entropy_client.add_repository(repodata) + if added: + entropy_client.output( + "[%s] %s" % ( + purple(to_repo), + blue(_("repository added succesfully")),)) + + exit_st = self._remove_repo(entropy_client, from_repo) + if exit_st != 0: + return exit_st + return 0 + + entropy_client.output( + "[%s] %s" % ( + purple(to_repo), + blue(_("cannot add repository")),), + level="warning", importance=1) + return 1 + def _list(self, entropy_client): """ Solo Repo List command.