From: "Slava Bacherikov" <slava@bacherikov.org.ua>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/packages/management/commands/
Date: Sun, 10 Jun 2012 17:51:00 +0000 (UTC) [thread overview]
Message-ID: <1339348226.1885cf27372ec2f34964d3323c2ffdb0322c6123.bacher09@gentoo> (raw)
commit: 1885cf27372ec2f34964d3323c2ffdb0322c6123
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sun Jun 10 17:10:26 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sun Jun 10 17:10:26 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=1885cf27
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
class Command(BaseCommand):
- args = ''
+ option_list = BaseCommand.option_list + (
+ make_option('--force-update',
+ action='store_true',
+ dest='force_update',
+ default=False,
+ help='Force updating'),
+ make_option('--not-scan-herds',
+ action='store_false',
+ dest='scan_herds',
+ default=True,
+ help='Force updating'),
+ make_option('-a', '--all',
+ action='store_true',
+ dest='scan_all',
+ default=False,
+ help='Force updating'),
+ make_option('--not-show-time',
+ action='store_false',
+ dest='show_time',
+ default=True,
+ help='Show time of scanning'),
+ #make_option('-r', '--repo',
+ #action='store',
+ #type="string",
+ #dest='reponame',
+ #help='Scan only this repository'),
+ )
+
+ args = '<repository names ...>'
help = 'Will scan package tree and update info about it in database'
def handle(self, *args, **options):
verbosity = int(options['verbosity'])
- st = datetime.datetime.now()
- #scan.scanpackages()
- #scan.scan_all_repos()
- Scanner(verbosity = verbosity).scan_all_repos()
- self.stdout.write(unicode((datetime.datetime.now() - st).total_seconds()))
- self.stdout.write("\n")
+ Scanner(repos = args, **options).scan()
+ #Scanner(verbosity = 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/scan.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_var):
return items_objects
+def toint(val, defval):
+ try:
+ return int(val)
+ except ValueError:
+ return defval
+
class Scanner(object):
- def __init__(self, verbosity = 1):
+ def __init__(self, **kwargs):
# maintainers_cache: maintainer.email as key, and maintainer object as
# value
self.maintainers_cache = {}
@@ -106,7 +113,37 @@ class Scanner(object):
self.arches_cache = {}
- self.verbosity = int(verbosity)
+ self.update_options(**kwargs)
+ self.reset_timer()
+
+ def reset_timer(self):
+ self.start_time = datetime.now()
+
+ def update_options(self, **kwargs):
+ self.verbosity = toint(kwargs.get('verbosity',1),1)
+ self.traceback = bool(kwargs.get('traceback',False))
+ self.s_all = bool(kwargs.get('scan_all', False))
+ self.is_show_time = bool(kwargs.get('show_time', True))
+ self.is_scan_herds = bool(kwargs.get('scan_herds', True))
+ #self.force_update = bool(kwargs.get('force_update', False))
+ self.scan_repos_name = tuple(kwargs.get('repos',[]))
+
+ def show_time(self):
+ end = datetime.now()
+ t_time = end - self.start_time
+ self.output("Scanning time is: %s secconds.\n", t_time.total_seconds())
+
+ 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()
def write(self, what, verbosity = 1):
if verbosity <= self.verbosity:
@@ -177,6 +214,7 @@ class Scanner(object):
def scan_herds(self):
+ self.write('Scaning herds\n', 3)
existent_herds = self.get_existent_herds()
herds_dict = self.herds_object.get_herds_indict()
herds_objects_dict = {}
@@ -238,20 +276,33 @@ class Scanner(object):
self.load_maintainers_to_cache()
return self.maintainers_cache
- def scan_all_repos(self, scan_herds = True):
+ def scan_all_repos(self):
#cache_dict = anydbm.open('cache.db','c')
- if scan_herds:
- self.write('Scaning herds\n', 3)
- self.scan_herds()
for repo in portage.iter_trees():
- self.output("Scaning repository '%s'\n", repo.name, 3)
+ self.scan_repo(repo)
+ #cache_dict.close()
- repo_obj, repo_created = models.RepositoryModel.objects \
- .get_or_create(name = repo.name)
+ def scan_repos_by_name(self, repo_names):
+ for repo_name in repo_names:
+ self.scan_repo_by_name(repo_name)
- self.scanpackages(repo, repo_obj)
- #cache_dict.close()
+ def scan_repo_by_name(self, repo_name):
+ try:
+ repo = 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 = models.RepositoryModel \
+ .objects.get_or_create(name = repo.name)
+
+ self.scanpackages(repo, repo_obj)
+
def get_licenses_objects(self, ebuild):
licenses = ebuild.licenses
next reply other threads:[~2012-06-10 17:51 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-10 17:51 Slava Bacherikov [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-08-26 23:00 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/apps/packages/management/commands/ Slava Bacherikov
2012-08-22 17:55 Slava Bacherikov
2012-07-18 23:03 Slava Bacherikov
2012-07-17 9:42 Slava Bacherikov
2012-07-06 23:09 Slava Bacherikov
2012-07-05 23:27 Slava Bacherikov
2012-06-19 0:12 Slava Bacherikov
2012-06-18 23:00 Slava Bacherikov
2012-06-13 22:15 Slava Bacherikov
2012-06-10 22:23 Slava Bacherikov
2012-06-09 18:19 Slava Bacherikov
2012-06-09 18:19 Slava Bacherikov
2012-06-04 20:09 Slava Bacherikov
2012-06-04 20:09 Slava Bacherikov
2012-06-04 20:09 Slava Bacherikov
2012-06-04 20:09 Slava Bacherikov
2012-06-03 16:19 Slava Bacherikov
2012-06-03 13:19 Slava Bacherikov
2012-06-01 21:28 Slava Bacherikov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1339348226.1885cf27372ec2f34964d3323c2ffdb0322c6123.bacher09@gentoo \
--to=slava@bacherikov.org.ua \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox