1 |
commit: 06ec53cb34cf47659e6b914a1525801845cde754 |
2 |
Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org> |
3 |
AuthorDate: Sun Aug 26 22:31:00 2012 +0000 |
4 |
Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua> |
5 |
CommitDate: Sun Aug 26 22:31:00 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=06ec53cb |
7 |
|
8 |
Add scan only overlays option |
9 |
|
10 |
--- |
11 |
.../packages/management/commands/scanpackages.py | 5 +++ |
12 |
gpackages/apps/packages/scan.py | 37 ++++++++++++++----- |
13 |
2 files changed, 32 insertions(+), 10 deletions(-) |
14 |
|
15 |
diff --git a/gpackages/apps/packages/management/commands/scanpackages.py b/gpackages/apps/packages/management/commands/scanpackages.py |
16 |
index 32e85b0..c0c57a4 100644 |
17 |
--- a/gpackages/apps/packages/management/commands/scanpackages.py |
18 |
+++ b/gpackages/apps/packages/management/commands/scanpackages.py |
19 |
@@ -24,6 +24,11 @@ class Command(BaseCommand): |
20 |
dest='scan_all', |
21 |
default=False, |
22 |
help='Scan all repositories'), |
23 |
+ make_option('-o', '--only-overlays', |
24 |
+ action='store_true', |
25 |
+ dest='scan_overlays', |
26 |
+ default=False, |
27 |
+ help='Scan only overlays repositories'), |
28 |
make_option('-r', '--update-repo', |
29 |
action='store_true', |
30 |
dest='update_repo', |
31 |
|
32 |
diff --git a/gpackages/apps/packages/scan.py b/gpackages/apps/packages/scan.py |
33 |
index 84d73f5..792853b 100644 |
34 |
--- a/gpackages/apps/packages/scan.py |
35 |
+++ b/gpackages/apps/packages/scan.py |
36 |
@@ -120,6 +120,7 @@ class Scanner(object): |
37 |
self.verbosity = toint(kwargs.get('verbosity',1),1) |
38 |
self.traceback = bool_get('traceback',False) |
39 |
self.s_all = bool_get('scan_all', False) |
40 |
+ self.s_overlyas = bool_get('scan_overlays', False) |
41 |
self.s_packages = bool_get('packages', False) |
42 |
self.s_only_repo_info = bool_get('only_repo_info', False) |
43 |
self.is_show_time = bool_get('show_time', True) |
44 |
@@ -148,17 +149,23 @@ class Scanner(object): |
45 |
if self.is_scan_herds: |
46 |
self.scan_herds() |
47 |
|
48 |
+ scan_kwargs = {'force_update' : self.force_update, |
49 |
+ 'delete' : self.delete, |
50 |
+ 'update_repo' : self.update_repo |
51 |
+ } |
52 |
+ |
53 |
if self.s_all and self.s_packages: |
54 |
- self.scan_all_repos(force_update = self.force_update, |
55 |
- delete = self.delete, |
56 |
- update_repo = self.update_repo) |
57 |
+ self.scan_all_repos(**scan_kwargs) |
58 |
+ |
59 |
+ elif self.s_overlyas and self.s_packages: |
60 |
+ self.scan_all_repos(exclude = ['gentoo'], **scan_kwargs) |
61 |
+ |
62 |
elif len(self.scan_repos_name) > 0 and self.s_packages: |
63 |
- self.scan_repos_by_name(self.scan_repos_name, |
64 |
- force_update = self.force_update, |
65 |
- delete = self.delete, |
66 |
- update_repo = self.update_repo) |
67 |
+ self.scan_repos_by_name(self.scan_repos_name, **scan_kwargs) |
68 |
+ |
69 |
elif self.s_only_repo_info and self.s_all: |
70 |
self.scan_all_repo_info(delete = self.delete) |
71 |
+ |
72 |
elif self.s_only_repo_info and len(self.scan_repos_name) > 0: |
73 |
self.scan_repo_info_by_names(self.scan_repos_name) |
74 |
|
75 |
@@ -345,11 +352,15 @@ class Scanner(object): |
76 |
self.load_maintainers_to_cache() |
77 |
return self.maintainers_cache |
78 |
|
79 |
- def scan_all_repos(self, **kwargs): |
80 |
+ def scan_all_repos(self, exclude = None, **kwargs): |
81 |
"Scan packages in all available trees" |
82 |
#cache_dict = anydbm.open('cache.db','c') |
83 |
+ if exclude is not None: |
84 |
+ exclude = frozenset(exclude) |
85 |
|
86 |
for repo in portage.iter_trees(): |
87 |
+ if exclude is not None and repo.name in exclude: |
88 |
+ continue |
89 |
self.scan_repo(repo, **kwargs) |
90 |
#cache_dict.close() |
91 |
|
92 |
@@ -395,13 +406,19 @@ class Scanner(object): |
93 |
|
94 |
return repo_obj |
95 |
|
96 |
- def scan_all_repo_info(self, delete = False): |
97 |
+ def scan_all_repo_info(self, exclude = None, delete = False): |
98 |
"""Scan all info (metada) of all available repositories |
99 |
Args: |
100 |
delete -- if this true that repository will delete |
101 |
- if portage would be not available""" |
102 |
+ if portage would be not available |
103 |
+ exclude -- exlude this overlays |
104 |
+ """ |
105 |
+ if exclude is not None: |
106 |
+ exclude = frozenset(exclude) |
107 |
ex_pk = [] |
108 |
for repo in portage.iter_trees(): |
109 |
+ if exclude is not None and repo.name in exclude: |
110 |
+ continue |
111 |
repo_obj = self.get_repo_obj(repo, update_repo = True) |
112 |
self.output("Scaned [%s]\n", repo.name) |
113 |
ex_pk.append(repo_obj.pk) |