diff options
author | Richard Maw <richard.maw@codethink.co.uk> | 2014-02-12 16:14:30 +0000 |
---|---|---|
committer | Richard Maw <richard.maw@codethink.co.uk> | 2014-02-13 15:39:37 +0000 |
commit | 4e50b8850f13bef14ec31710c31801330e41cc32 (patch) | |
tree | c220bece8112fb14d399857150820b0c6060a483 /morphlib/morphset.py | |
parent | f6c767a64edd2634f1d513e15ce7bb5cfe62dfd9 (diff) | |
download | morph-4e50b8850f13bef14ec31710c31801330e41cc32.tar.gz |
Allow omitting repo and ref when referring to strata
Diffstat (limited to 'morphlib/morphset.py')
-rw-r--r-- | morphlib/morphset.py | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/morphlib/morphset.py b/morphlib/morphset.py index 6aabbde5..dedbabd5 100644 --- a/morphlib/morphset.py +++ b/morphlib/morphset.py @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Codethink Limited +# Copyright (C) 2013-2014 Codethink Limited # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -81,7 +81,7 @@ class MorphologySet(object): for spec in specs: name = spec.get('morph', spec.get('name')) if name == wanted_name: - return spec['repo'], spec['ref'], name + return spec.get('repo'), spec.get('ref'), name return None, None, None def get_stratum_in_system(self, system_morph, stratum_name): @@ -160,7 +160,8 @@ class MorphologySet(object): specs = m[kind] for spec in specs: if cb_filter(m, kind, spec): - orig_spec = (spec['repo'], spec['ref'], spec['morph']) + orig_spec = (spec.get('repo'), spec.get('ref'), + spec['morph']) dirtied = cb_process(m, kind, spec) if dirtied: m.dirty = True @@ -177,11 +178,11 @@ class MorphologySet(object): tup = (m.repo_url, m.ref, m.filename[:-len('.morph')]) if tup in altered_references: spec = altered_references[tup] - if m.ref != spec['ref']: - m.ref = spec['ref'] + if m.ref != spec.get('ref'): + m.ref = spec.get('ref') m.dirty = True assert (m.filename == spec['morph'] + '.morph' - or m.repo_url == spec['repo']), \ + or m.repo_url == spec.get('repo')), \ 'Moving morphologies is not supported.' def change_ref(self, repo_url, orig_ref, morph_filename, new_ref): @@ -193,12 +194,12 @@ class MorphologySet(object): ''' def wanted_spec(m, kind, spec): - return (spec['repo'] == repo_url and - spec['ref'] == orig_ref and + return (spec.get('repo') == repo_url and + spec.get('ref') == orig_ref and spec['morph'] + '.morph' == morph_filename) def process_spec(m, kind, spec): - spec['unpetrify-ref'] = spec['ref'] + spec['unpetrify-ref'] = spec.get('ref') spec['ref'] = new_ref return True @@ -214,10 +215,10 @@ class MorphologySet(object): known = set() def wanted_spec(m, kind, spec): - return (spec['repo'], spec['ref']) not in known + return (spec.get('repo'), spec.get('ref')) not in known def process_spec(m, kind, spec): - known.add((spec['repo'], spec['ref'])) + known.add((spec.get('repo'), spec.get('ref'))) return False self.traverse_specs(process_spec, wanted_spec) @@ -234,11 +235,11 @@ class MorphologySet(object): ''' def wanted_spec(m, kind, spec): - return spec['repo'] == repo_url + return spec.get('repo') == repo_url def process_spec(m, kind, spec): if 'unpetrify-ref' not in spec: - spec['unpetrify-ref'] = spec['ref'] + spec['unpetrify-ref'] = spec.get('ref') spec['ref'] = new_ref return True @@ -262,13 +263,13 @@ class MorphologySet(object): # the details are tricky. if not (m['kind'] == 'stratum' and kind == 'chunks'): return - ref = spec['ref'] + ref = spec.get('ref') return (not morphlib.git.is_valid_sha1(ref) - and (spec['repo'], ref) in resolutions) + and (spec.get('repo'), ref) in resolutions) def process_chunk_spec(m, kind, spec): - tup = (spec['repo'], spec['ref']) - spec['unpetrify-ref'] = spec['ref'] + tup = (spec.get('repo'), spec.get('ref')) + spec['unpetrify-ref'] = spec.get('ref') spec['ref'] = resolutions[tup] return True @@ -281,7 +282,7 @@ class MorphologySet(object): def wanted_spec(m, kind, spec): return ('unpetrify-ref' in spec and - morphlib.git.is_valid_sha1(spec['ref'])) + morphlib.git.is_valid_sha1(spec.get('ref'))) def process_spec(m, kind, spec): spec['ref'] = spec.pop('unpetrify-ref') return True |