From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1Sgm3S-0002pN-Pj for garchives@archives.gentoo.org; Tue, 19 Jun 2012 00:12:23 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id B5CFAE090F; Tue, 19 Jun 2012 00:12:08 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 76615E090F for ; Tue, 19 Jun 2012 00:12:07 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id B27291B4020 for ; Tue, 19 Jun 2012 00:12:06 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 4D5C8E5430 for ; Tue, 19 Jun 2012 00:12:05 +0000 (UTC) From: "Slava Bacherikov" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Slava Bacherikov" Message-ID: <1340064714.cc5fc55fac985559a64b8cfffbe183b2928a4674.bacher09@gentoo> Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/packages/management/commands/ X-VCS-Repository: proj/gentoo-packages X-VCS-Files: gpackages/apps/packages/management/commands/scanpackages.py gpackages/apps/packages/management/commands/scanrepoinfo.py gpackages/apps/packages/scan.py X-VCS-Directories: gpackages/apps/packages/ gpackages/apps/packages/management/commands/ X-VCS-Committer: bacher09 X-VCS-Committer-Name: Slava Bacherikov X-VCS-Revision: cc5fc55fac985559a64b8cfffbe183b2928a4674 X-VCS-Branch: master Date: Tue, 19 Jun 2012 00:12:05 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: 40bed581-436b-4abf-91fb-c06b73666b40 X-Archives-Hash: 0eb98e6abad47fbe278169e8ee7bfc1e commit: cc5fc55fac985559a64b8cfffbe183b2928a4674 Author: Slava Bacherikov bacher09 org> AuthorDate: Tue Jun 19 00:11:54 2012 +0000 Commit: Slava Bacherikov bacherikov org ua> CommitDate: Tue Jun 19 00:11:54 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gentoo-packag= es.git;a=3Dcommit;h=3Dcc5fc55f Add scaning utility for repo info --- .../packages/management/commands/scanpackages.py | 3 +- .../packages/management/commands/scanrepoinfo.py | 29 +++++++++++ gpackages/apps/packages/scan.py | 51 ++++++++++++++= +++--- 3 files changed, 74 insertions(+), 9 deletions(-) diff --git a/gpackages/apps/packages/management/commands/scanpackages.py = b/gpackages/apps/packages/management/commands/scanpackages.py index 71c308c..3809ff4 100644 --- a/gpackages/apps/packages/management/commands/scanpackages.py +++ b/gpackages/apps/packages/management/commands/scanpackages.py @@ -49,5 +49,4 @@ class Command(BaseCommand): args =3D '' help =3D 'Will scan package tree and update info about it in databas= e' def handle(self, *args, **options): - verbosity =3D int(options['verbosity']) - Scanner(repos =3D args, **options).scan() + Scanner(repos =3D args, packages =3D True, **options).scan() diff --git a/gpackages/apps/packages/management/commands/scanrepoinfo.py = b/gpackages/apps/packages/management/commands/scanrepoinfo.py new file mode 100644 index 0000000..19049c4 --- /dev/null +++ b/gpackages/apps/packages/management/commands/scanrepoinfo.py @@ -0,0 +1,29 @@ +from django.core.management.base import BaseCommand, CommandError +from packages.scan import Scanner +from optparse import make_option + + +class Command(BaseCommand): + option_list =3D BaseCommand.option_list + ( + make_option('--not-show-time', + action=3D'store_false', + dest=3D'show_time', + default=3DTrue, + help=3D'Show time of scanning'), + make_option('-d' ,'--del', + action=3D'store_true', + dest=3D'delete', + default=3DFalse, + help=3D'Delete'), + ) + + args =3D '' + help =3D 'Will scan repositories info' + def handle(self, *args, **options): + if len(args) > 0: + scan_all =3D False + else: + scan_all =3D True + + Scanner(repos =3D args, scan_all =3D scan_all, + only_repo_info =3D True, **options).scan() diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/sc= an.py index 8d8fed9..3e5cf81 100644 --- a/gpackages/apps/packages/scan.py +++ b/gpackages/apps/packages/scan.py @@ -122,6 +122,8 @@ class Scanner(object): self.verbosity =3D toint(kwargs.get('verbosity',1),1) self.traceback =3D bool(kwargs.get('traceback',False)) self.s_all =3D bool(kwargs.get('scan_all', False)) + self.s_packages =3D bool(kwargs.get('packages', False)) + self.s_only_repo_info =3D bool(kwargs.get('only_repo_info', Fals= e)) self.is_show_time =3D bool(kwargs.get('show_time', True)) self.is_scan_herds =3D bool(kwargs.get('scan_herds', True)) self.force_update =3D bool(kwargs.get('force_update', False)) @@ -140,15 +142,19 @@ class Scanner(object): if self.is_scan_herds: self.scan_herds() =20 - if self.s_all: + if self.s_all and self.s_packages: self.scan_all_repos(force_update =3D self.force_update, delete =3D self.delete, update_repo =3D self.update_repo) - elif len(self.scan_repos_name) > 0: + elif len(self.scan_repos_name) > 0 and self.s_packages: self.scan_repos_by_name(self.scan_repos_name, force_update =3D self.force_update, delete =3D self.delete, update_repo =3D self.update_repo) + elif self.s_only_repo_info and self.s_all: + self.scan_all_repo_info(delete =3D self.delete) + elif self.s_only_repo_info and len(self.scan_repos_name) > 0: + self.scan_repo_info_by_names(self.scan_repos_name) =20 if self.scan_global_use_descr: self.update_all_globals_uses_descriptions() @@ -301,17 +307,25 @@ class Scanner(object): for repo_name in repo_names: self.scan_repo_by_name(repo_name, **kwargs) =20 - def scan_repo_by_name(self, repo_name, **kwargs): + def get_repo_by_name(self, repo_name, quiet =3D False, trace =3D Fal= se): try: repo =3D portage.get_tree_by_name(repo_name) except ValueError: - self.output("Bad repository name '%s'\n", repo_name, 1) + if not quiet: + self.output("Bad repository name '%s'\n", repo_name, 1) + if trace: + raise + return None else: - self.scan_repo(repo, **kwargs) + return repo =20 - def scan_repo(self, repo, update_repo =3D False, **kwargs): - self.output("Scaning repository '%s'\n", repo.name, 3) + def scan_repo_by_name(self, repo_name, **kwargs): + repo =3D self.get_repo_by_name(repo_name) + + if repo is not None: + self.scan_repo(repo, **kwargs) =20 + def get_repo_obj(self, repo, update_repo =3D False): repo_obj, repo_created =3D models.RepositoryModel \ .objects.get_or_create(repo =3D repo) =20 @@ -324,6 +338,29 @@ class Scanner(object): else: repo_obj.add_related(repo) =20 + return repo_obj + + def scan_all_repo_info(self, delete =3D False): + ex_pk =3D [] + for repo in portage.iter_trees(): + repo_obj =3D self.get_repo_obj(repo, update_repo =3D True) + self.output("Scaned [%s]\n", repo.name) + ex_pk.append(repo_obj.pk) + + if delete: + models.RepositoryModel.objects.exclude(pk__in =3D ex_pk).del= ete() + + def scan_repo_info_by_names(self, repo_list): + for repo_name in repo_list: + repo =3D self.get_repo_by_name(repo_name) + if repo is not None: + self.get_repo_obj(repo, update_repo =3D True) + self.output("Scaned [%s]\n", repo.name) + + def scan_repo(self, repo, update_repo =3D False, **kwargs): + self.output("Scaning repository '%s'\n", repo.name, 3) + + repo_obj =3D self.get_repo_obj(repo, update_repo =3D update_repo= ) self.scanpackages(repo, repo_obj, **kwargs) =20 =20