diff options
Diffstat (limited to 'morphlib/app.py')
-rw-r--r-- | morphlib/app.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/morphlib/app.py b/morphlib/app.py index 08b020ff..0c4f3455 100644 --- a/morphlib/app.py +++ b/morphlib/app.py @@ -20,10 +20,17 @@ import logging import os import sys import time +import urlparse import warnings import morphlib +class InvalidUrlError(cliapp.AppException): + + def __init__(self, parameter, url): + cliapp.AppException.__init__( + self, 'Value %s for argument %s is not a url' % + (url, parameter)) defaults = { 'trove-host': 'git.baserock.org', @@ -200,6 +207,13 @@ class Morph(cliapp.Application): tmpdir = os.path.join(tmpdir_base, 'morph_tmp') self.settings['tempdir'] = tmpdir + if self.settings['tarball-server']: + url_split = urlparse.urlparse(self.settings['tarball-server']) + if not (url_split.netloc and + url_split.scheme in ('http', 'https', 'file')): + raise InvalidUrlError('tarball-server', + self.settings['tarball-server']) + if 'MORPH_DUMP_PROCESSED_CONFIG' in os.environ: self.settings.dump_config(sys.stdout) sys.exit(0) @@ -318,11 +332,15 @@ class Morph(cliapp.Application): visit(reponame, ref, filename, absref, tree, morphology) if morphology['kind'] == 'system': - queue.extend((s['repo'], s['ref'], '%s.morph' % s['morph']) + queue.extend((s['repo'] or reponame, + s['ref'] or ref, + '%s.morph' % s['morph']) for s in morphology['strata']) elif morphology['kind'] == 'stratum': if morphology['build-depends']: - queue.extend((s['repo'], s['ref'], '%s.morph' % s['morph']) + queue.extend((s['repo'] or reponame, + s['ref'] or ref, + '%s.morph' % s['morph']) for s in morphology['build-depends']) queue.extend((c['repo'], c['ref'], '%s.morph' % c['morph']) for c in morphology['chunks']) |