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: Tue, 19 Jun 2012 00:12:05 +0000 (UTC) [thread overview]
Message-ID: <1340064714.cc5fc55fac985559a64b8cfffbe183b2928a4674.bacher09@gentoo> (raw)
commit: cc5fc55fac985559a64b8cfffbe183b2928a4674
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Tue Jun 19 00:11:54 2012 +0000
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Tue Jun 19 00:11:54 2012 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=cc5fc55f
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 = '<repository names ...>'
help = 'Will scan package tree and update info about it in database'
def handle(self, *args, **options):
- verbosity = int(options['verbosity'])
- Scanner(repos = args, **options).scan()
+ Scanner(repos = args, packages = 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 = BaseCommand.option_list + (
+ make_option('--not-show-time',
+ action='store_false',
+ dest='show_time',
+ default=True,
+ help='Show time of scanning'),
+ make_option('-d' ,'--del',
+ action='store_true',
+ dest='delete',
+ default=False,
+ help='Delete'),
+ )
+
+ args = '<repository names ...>'
+ help = 'Will scan repositories info'
+ def handle(self, *args, **options):
+ if len(args) > 0:
+ scan_all = False
+ else:
+ scan_all = True
+
+ Scanner(repos = args, scan_all = scan_all,
+ only_repo_info = True, **options).scan()
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.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 = toint(kwargs.get('verbosity',1),1)
self.traceback = bool(kwargs.get('traceback',False))
self.s_all = bool(kwargs.get('scan_all', False))
+ self.s_packages = bool(kwargs.get('packages', False))
+ self.s_only_repo_info = bool(kwargs.get('only_repo_info', 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))
@@ -140,15 +142,19 @@ class Scanner(object):
if self.is_scan_herds:
self.scan_herds()
- if self.s_all:
+ if self.s_all and self.s_packages:
self.scan_all_repos(force_update = self.force_update,
delete = self.delete,
update_repo = 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 = self.force_update,
delete = self.delete,
update_repo = self.update_repo)
+ elif self.s_only_repo_info and self.s_all:
+ self.scan_all_repo_info(delete = 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)
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)
- def scan_repo_by_name(self, repo_name, **kwargs):
+ def get_repo_by_name(self, repo_name, quiet = False, trace = False):
try:
repo = 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
- def scan_repo(self, repo, update_repo = False, **kwargs):
- self.output("Scaning repository '%s'\n", repo.name, 3)
+ def scan_repo_by_name(self, repo_name, **kwargs):
+ repo = self.get_repo_by_name(repo_name)
+
+ if repo is not None:
+ self.scan_repo(repo, **kwargs)
+ def get_repo_obj(self, repo, update_repo = False):
repo_obj, repo_created = models.RepositoryModel \
.objects.get_or_create(repo = repo)
@@ -324,6 +338,29 @@ class Scanner(object):
else:
repo_obj.add_related(repo)
+ return repo_obj
+
+ def scan_all_repo_info(self, delete = False):
+ ex_pk = []
+ for repo in portage.iter_trees():
+ repo_obj = self.get_repo_obj(repo, update_repo = True)
+ self.output("Scaned [%s]\n", repo.name)
+ ex_pk.append(repo_obj.pk)
+
+ if delete:
+ models.RepositoryModel.objects.exclude(pk__in = ex_pk).delete()
+
+ def scan_repo_info_by_names(self, repo_list):
+ for repo_name in repo_list:
+ repo = self.get_repo_by_name(repo_name)
+ if repo is not None:
+ self.get_repo_obj(repo, update_repo = True)
+ self.output("Scaned [%s]\n", repo.name)
+
+ def scan_repo(self, repo, update_repo = False, **kwargs):
+ self.output("Scaning repository '%s'\n", repo.name, 3)
+
+ repo_obj = self.get_repo_obj(repo, update_repo = update_repo)
self.scanpackages(repo, repo_obj, **kwargs)
next reply other threads:[~2012-06-19 0:12 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-19 0:12 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-18 23:00 Slava Bacherikov
2012-06-13 22:15 Slava Bacherikov
2012-06-10 22:23 Slava Bacherikov
2012-06-10 17:51 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=1340064714.cc5fc55fac985559a64b8cfffbe183b2928a4674.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