euscan: handlers now use a Package object instead of cpv

Signed-off-by: volpino <fox91@anche.no>
This commit is contained in:
volpino 2012-07-24 08:56:00 +02:00 committed by Corentin Chary
parent 67654ee0b4
commit 1cf5d0726a
9 changed files with 52 additions and 52 deletions

View File

@ -14,22 +14,22 @@ handlers = sorted(
) )
def find_best_handler(cpv, url): def find_best_handler(pkg, url):
for handler in handlers: for handler in handlers:
if handler.can_handle(cpv, url): if handler.can_handle(pkg, url):
return handler return handler
return None return None
def scan(cpv, url): def scan(pkg, url):
handler = find_best_handler(cpv, url) handler = find_best_handler(pkg, url)
if handler: if handler:
return handler.scan(cpv, url) return handler.scan(pkg, url)
return [] return []
def brute_force(cpv, url): def brute_force(pkg, url):
handler = find_best_handler(cpv, url) handler = find_best_handler(pkg, url)
if handler: if handler:
return handler.brute_force(cpv, url) return handler.brute_force(pkg, url)
return [] return []

View File

@ -12,7 +12,7 @@ PRIORITY = 100
_cpan_package_name_re = re.compile("mirror://cpan/authors/.*/([^/.]*).*") _cpan_package_name_re = re.compile("mirror://cpan/authors/.*/([^/.]*).*")
def can_handle(cpv, url): def can_handle(pkg, url):
return url.startswith('mirror://cpan/') return url.startswith('mirror://cpan/')
@ -79,8 +79,8 @@ def cpan_vercmp(cp, a, b):
return 1 return 1
def scan(cpv, url): def scan(pkg, url):
cp, ver, rev = portage.pkgsplit(cpv) cp, ver, rev = portage.pkgsplit(pkg.cpv)
pkg = guess_package(cp, url) pkg = guess_package(cp, url)
orig_url = url orig_url = url
@ -133,5 +133,5 @@ def scan(cpv, url):
return ret return ret
def brute_force(cpv, url): def brute_force(pkg, url):
return [] return []

View File

@ -104,7 +104,7 @@ def scan_directory_recursive(cp, ver, rev, url, steps, orig_url):
return versions return versions
def scan(cpv, url): def scan(pkg, url):
for bu in SCANDIR_BLACKLIST_URLS: for bu in SCANDIR_BLACKLIST_URLS:
if re.match(bu, url): if re.match(bu, url):
output.einfo("%s is blacklisted by rule %s" % (url, bu)) output.einfo("%s is blacklisted by rule %s" % (url, bu))
@ -114,7 +114,7 @@ def scan(cpv, url):
if not resolved_url: if not resolved_url:
return [] return []
cp, ver, rev = portage.pkgsplit(cpv) cp, ver, rev = portage.pkgsplit(pkg.cpv)
# 'Hack' for _beta/_rc versions where _ is used instead of - # 'Hack' for _beta/_rc versions where _ is used instead of -
if ver not in resolved_url: if ver not in resolved_url:
@ -141,8 +141,8 @@ def scan(cpv, url):
return ret return ret
def brute_force(cpv, url): def brute_force(pkg, url):
cp, ver, rev = portage.pkgsplit(cpv) cp, ver, rev = portage.pkgsplit(pkg.cpv)
url = helpers.parse_mirror(url) url = helpers.parse_mirror(url)
if not url: if not url:
@ -226,5 +226,5 @@ def brute_force(cpv, url):
return result return result
def can_handle(cpv, url): def can_handle(pkg, url):
return True return True

View File

@ -11,7 +11,7 @@ CONFIDENCE = 100.0
PRIORITY = 100 PRIORITY = 100
def can_handle(cpv, url): def can_handle(pkg, url):
return url.startswith('mirror://github/') return url.startswith('mirror://github/')
@ -22,13 +22,13 @@ def guess_package(cp, url):
return (match.group(1), match.group(2), match.group(3)) return (match.group(1), match.group(2), match.group(3))
def scan(cpv, url): def scan(pkg, url):
'http://developer.github.com/v3/repos/downloads/' 'http://developer.github.com/v3/repos/downloads/'
user, project, filename = guess_package(cpv, url) user, project, filename = guess_package(pkg.cpv, url)
# find out where version is expected to be found # find out where version is expected to be found
cp, ver, rev = portage.pkgsplit(cpv) cp, ver, rev = portage.pkgsplit(pkg.cpv)
if ver not in filename: if ver not in filename:
return return
@ -54,5 +54,5 @@ def scan(cpv, url):
yield (dl['html_url'], pv, HANDLER_NAME, CONFIDENCE) yield (dl['html_url'], pv, HANDLER_NAME, CONFIDENCE)
def brute_force(cpv, url): def brute_force(pkg, url):
return [] return []

View File

@ -5,7 +5,7 @@ PRIORITY = 100
HANDLER_NAME = "kde" HANDLER_NAME = "kde"
def can_handle(cpv, url): def can_handle(pkg, url):
if url.startswith('mirror://kde/'): if url.startswith('mirror://kde/'):
return True return True
return False return False
@ -22,21 +22,21 @@ def clean_results(results):
return ret return ret
def scan(cpv, url): def scan(pkg, url):
results = generic.scan(cpv, url) results = generic.scan(pkg.cpv, url)
if url.startswith('mirror://kde/unstable/'): if url.startswith('mirror://kde/unstable/'):
url = url.replace('mirror://kde/unstable/', 'mirror://kde/stable/') url = url.replace('mirror://kde/unstable/', 'mirror://kde/stable/')
results += generic.scan(cpv, url) results += generic.scan(pkg.cpv, url)
return clean_results(results) return clean_results(results)
def brute_force(cpv, url): def brute_force(pkg, url):
results = generic.brute_force(cpv, url) results = generic.brute_force(pkg.cpv, url)
if url.startswith('mirror://kde/unstable/'): if url.startswith('mirror://kde/unstable/'):
url = url.replace('mirror://kde/unstable/', 'mirror://kde/stable/') url = url.replace('mirror://kde/unstable/', 'mirror://kde/stable/')
results += generic.brute_force(cpv, url) results += generic.brute_force(pkg.cpv, url)
return clean_results(results) return clean_results(results)

View File

@ -10,7 +10,7 @@ CONFIDENCE = 100.0
PRIORITY = 100 PRIORITY = 100
def can_handle(cpv, url): def can_handle(pkg, url):
if url.startswith('http://pear.php.net/get/'): if url.startswith('http://pear.php.net/get/'):
return True return True
if url.startswith('http://pecl.php.net/get/'): if url.startswith('http://pecl.php.net/get/'):
@ -30,12 +30,12 @@ def guess_package_and_channel(cp, url):
return pkg, host return pkg, host
def scan(cpv, url): def scan(pkg, url):
cp, ver, rev = portage.pkgsplit(cpv) cp, ver, rev = portage.pkgsplit(pkg.cpv)
pkg, channel = guess_package_and_channel(cp, url) package, channel = guess_package_and_channel(cp, url)
orig_url = url orig_url = url
url = 'http://%s/rest/r/%s/allreleases.xml' % (channel, pkg.lower()) url = 'http://%s/rest/r/%s/allreleases.xml' % (channel, package.lower())
output.einfo("Using: " + url) output.einfo("Using: " + url)
@ -62,7 +62,7 @@ def scan(cpv, url):
if helpers.version_filtered(cp, ver, pv): if helpers.version_filtered(cp, ver, pv):
continue continue
url = 'http://%s/get/%s-%s.tgz' % (channel, pkg, up_pv) url = 'http://%s/get/%s-%s.tgz' % (channel, package, up_pv)
if url == orig_url: if url == orig_url:
continue continue
@ -72,5 +72,5 @@ def scan(cpv, url):
return ret return ret
def brute_force(cpv, url): def brute_force(pkg, url):
return [] return []

View File

@ -10,7 +10,7 @@ CONFIDENCE = 100.0
PRIORITY = 100 PRIORITY = 100
def can_handle(cpv, url): def can_handle(pkg, url):
return url.startswith('mirror://pypi/') return url.startswith('mirror://pypi/')
@ -24,10 +24,10 @@ def guess_package(cp, url):
return pkg return pkg
def scan(cpv, url): def scan(pkg, url):
'http://wiki.python.org/moin/PyPiXmlRpc' 'http://wiki.python.org/moin/PyPiXmlRpc'
package = guess_package(cpv, url) package = guess_package(pkg.cpv, url)
output.einfo("Using PyPi XMLRPC: " + package) output.einfo("Using PyPi XMLRPC: " + package)
@ -39,7 +39,7 @@ def scan(cpv, url):
versions.reverse() versions.reverse()
cp, ver, rev = portage.pkgsplit(cpv) cp, ver, rev = portage.pkgsplit(pkg.cpv)
ret = [] ret = []
@ -54,5 +54,5 @@ def scan(cpv, url):
return ret return ret
def brute_force(cpv, url): def brute_force(pkg, url):
return [] return []

View File

@ -10,7 +10,7 @@ CONFIDENCE = 100.0
PRIORITY = 100 PRIORITY = 100
def can_handle(cpv, url): def can_handle(pkg, url):
return url.startswith('mirror://rubygems/') return url.startswith('mirror://rubygems/')
@ -29,13 +29,13 @@ def guess_gem(cpv, url):
return pkg return pkg
def scan(cpv, url): def scan(pkg, url):
'http://guides.rubygems.org/rubygems-org-api/#gemversion' 'http://guides.rubygems.org/rubygems-org-api/#gemversion'
gem = guess_gem(cpv, url) gem = guess_gem(pkg.cpv, url)
if not gem: if not gem:
output.eerror("Can't guess gem name using %s and %s" % \ output.eerror("Can't guess gem name using %s and %s" % \
(cpv, url)) (pkg.cpv, url))
return [] return []
url = 'http://rubygems.org/api/v1/versions/%s.json' % gem url = 'http://rubygems.org/api/v1/versions/%s.json' % gem
@ -58,7 +58,7 @@ def scan(cpv, url):
if not versions: if not versions:
return [] return []
cp, ver, rev = portage.pkgsplit(cpv) cp, ver, rev = portage.pkgsplit(pkg.cpv)
ret = [] ret = []
@ -73,5 +73,5 @@ def scan(cpv, url):
return ret return ret
def brute_force(cpv, url): def brute_force(pkg, url):
return [] return []

View File

@ -44,7 +44,7 @@ def filter_versions(cp, versions):
] ]
def scan_upstream_urls(cpv, urls, on_progress): def scan_upstream_urls(pkg, urls, on_progress):
versions = [] versions = []
if on_progress: if on_progress:
@ -73,7 +73,7 @@ def scan_upstream_urls(cpv, urls, on_progress):
# Try normal scan # Try normal scan
if CONFIG["scan-dir"]: if CONFIG["scan-dir"]:
try: try:
versions.extend(handlers.scan(cpv, url)) versions.extend(handlers.scan(pkg, url))
except Exception as e: except Exception as e:
output.ewarn("Handler failed: [%s] %s" output.ewarn("Handler failed: [%s] %s"
% (e.__class__.__name__, e.message)) % (e.__class__.__name__, e.message))
@ -83,12 +83,12 @@ def scan_upstream_urls(cpv, urls, on_progress):
# Brute Force # Brute Force
if CONFIG["brute-force"] > 0: if CONFIG["brute-force"] > 0:
versions.extend(handlers.brute_force(cpv, url)) versions.extend(handlers.brute_force(pkg, url))
if versions and CONFIG['oneshot']: if versions and CONFIG['oneshot']:
break break
cp, ver, rev = portage.pkgsplit(cpv) cp, ver, rev = portage.pkgsplit(pkg.cpv)
result = filter_versions(cp, versions) result = filter_versions(cp, versions)
@ -216,7 +216,7 @@ def scan_upstream(query, on_progress=None):
scan_time = (datetime.now() - start_time).total_seconds() scan_time = (datetime.now() - start_time).total_seconds()
output.metadata("scan_time", scan_time, show=False) output.metadata("scan_time", scan_time, show=False)
result = scan_upstream_urls(pkg.cpv, urls, on_progress) result = scan_upstream_urls(pkg, urls, on_progress)
if on_progress: if on_progress:
on_progress(increment=10) on_progress(increment=10)