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 1SdmIV-00022O-8s for garchives@archives.gentoo.org; Sun, 10 Jun 2012 17:51:33 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 70CD6E057F; Sun, 10 Jun 2012 17:51:09 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 328F4E057F for ; Sun, 10 Jun 2012 17:51:03 +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 45E3D1B4016 for ; Sun, 10 Jun 2012 17:51:03 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id D35ECE5436 for ; Sun, 10 Jun 2012 17:51:00 +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: <1339348226.1885cf27372ec2f34964d3323c2ffdb0322c6123.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/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: 1885cf27372ec2f34964d3323c2ffdb0322c6123 X-VCS-Branch: master Date: Sun, 10 Jun 2012 17:51:00 +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: 3a139bfb-1f64-46b3-bdb1-1ed1006f8403 X-Archives-Hash: 8f869742ebcbd8b69ed5ffe26875f261 commit: 1885cf27372ec2f34964d3323c2ffdb0322c6123 Author: Slava Bacherikov bacher09 org> AuthorDate: Sun Jun 10 17:10:26 2012 +0000 Commit: Slava Bacherikov bacherikov org ua> CommitDate: Sun Jun 10 17:10:26 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gentoo-packag= es.git;a=3Dcommit;h=3D1885cf27 Add support for command modificators --- .../packages/management/commands/scanpackages.py | 41 +++++++++-- gpackages/apps/packages/scan.py | 73 ++++++++++++++= +++--- 2 files changed, 95 insertions(+), 19 deletions(-) diff --git a/gpackages/apps/packages/management/commands/scanpackages.py = b/gpackages/apps/packages/management/commands/scanpackages.py index 8f47848..a1d5cd6 100644 --- a/gpackages/apps/packages/management/commands/scanpackages.py +++ b/gpackages/apps/packages/management/commands/scanpackages.py @@ -1,5 +1,4 @@ from django.core.management.base import BaseCommand, CommandError -import datetime import logging from packages.scan import Scanner from optparse import make_option @@ -9,13 +8,39 @@ from optparse import make_option =20 =20 class Command(BaseCommand): - args =3D '' + option_list =3D BaseCommand.option_list + ( + make_option('--force-update', + action=3D'store_true', + dest=3D'force_update', + default=3DFalse, + help=3D'Force updating'), + make_option('--not-scan-herds', + action=3D'store_false', + dest=3D'scan_herds', + default=3DTrue, + help=3D'Force updating'), + make_option('-a', '--all', + action=3D'store_true', + dest=3D'scan_all', + default=3DFalse, + help=3D'Force updating'), + make_option('--not-show-time', + action=3D'store_false', + dest=3D'show_time', + default=3DTrue, + help=3D'Show time of scanning'), + #make_option('-r', '--repo', + #action=3D'store', + #type=3D"string", + #dest=3D'reponame', + #help=3D'Scan only this repository'), + ) + + 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']) - st =3D datetime.datetime.now() - #scan.scanpackages() - #scan.scan_all_repos() - Scanner(verbosity =3D verbosity).scan_all_repos() - self.stdout.write(unicode((datetime.datetime.now() - st).total_s= econds())) - self.stdout.write("\n") + Scanner(repos =3D args, **options).scan() + #Scanner(verbosity =3D verbosity).scan_all_repos() + #self.stdout.write(unicode((datetime.datetime.now() - st).total_= seconds())) + #self.stdout.write("\n") diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/sc= an.py index 37ba159..411500f 100644 --- a/gpackages/apps/packages/scan.py +++ b/gpackages/apps/packages/scan.py @@ -1,3 +1,4 @@ +from datetime import datetime from packages import models import sys from django.db import IntegrityError @@ -86,9 +87,15 @@ def _get_items(items_list, Model, field_name, cache_va= r): return items_objects =20 =20 +def toint(val, defval): + try: + return int(val) + except ValueError: + return defval + =20 class Scanner(object): - def __init__(self, verbosity =3D 1): + def __init__(self, **kwargs): # maintainers_cache: maintainer.email as key, and maintainer obj= ect as # value self.maintainers_cache =3D {} @@ -106,7 +113,37 @@ class Scanner(object): =20 self.arches_cache =3D {} =20 - self.verbosity =3D int(verbosity) + self.update_options(**kwargs) + self.reset_timer() + + def reset_timer(self): + self.start_time =3D datetime.now() + + def update_options(self, **kwargs): + 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.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)) + self.scan_repos_name =3D tuple(kwargs.get('repos',[])) + + def show_time(self): + end =3D datetime.now() + t_time =3D end - self.start_time + self.output("Scanning time is: %s secconds.\n", t_time.total_sec= onds()) + + def scan(self): + if self.is_scan_herds: + self.scan_herds() + + if self.s_all: + self.scan_all_repos() + else: + self.scan_repos_by_name(self.scan_repos_name) + + if self.is_show_time: + self.show_time() =20 def write(self, what, verbosity =3D 1): if verbosity <=3D self.verbosity: @@ -177,6 +214,7 @@ class Scanner(object): =20 =20 def scan_herds(self): + self.write('Scaning herds\n', 3) existent_herds =3D self.get_existent_herds() herds_dict =3D self.herds_object.get_herds_indict() herds_objects_dict =3D {} @@ -238,20 +276,33 @@ class Scanner(object): self.load_maintainers_to_cache() return self.maintainers_cache =20 - def scan_all_repos(self, scan_herds =3D True): + def scan_all_repos(self): #cache_dict =3D anydbm.open('cache.db','c') - if scan_herds: - self.write('Scaning herds\n', 3) - self.scan_herds() =20 for repo in portage.iter_trees(): - self.output("Scaning repository '%s'\n", repo.name, 3) + self.scan_repo(repo) + #cache_dict.close() =20 - repo_obj, repo_created =3D models.RepositoryModel.objects \ - .get_or_create(name =3D repo.name) + def scan_repos_by_name(self, repo_names): + for repo_name in repo_names: + self.scan_repo_by_name(repo_name) =20 - self.scanpackages(repo, repo_obj) - #cache_dict.close() + def scan_repo_by_name(self, repo_name): + try: + repo =3D portage.get_tree_by_name(repo_name) + except ValueError: + self.output("Bad repository name '%s'", repo.name, 1) + else: + self.scan_repo(repo) + + def scan_repo(self, repo): + self.output("Scaning repository '%s'\n", repo.name, 3) + + repo_obj, repo_created =3D models.RepositoryModel \ + .objects.get_or_create(name =3D repo.name) + + self.scanpackages(repo, repo_obj) + =20 =20 def get_licenses_objects(self, ebuild): licenses =3D ebuild.licenses