diff options
author | Ben Brown <ben.brown@codethink.co.uk> | 2017-05-23 16:02:38 +0000 |
---|---|---|
committer | Ben Brown <ben.brown@codethink.co.uk> | 2017-05-23 16:02:38 +0000 |
commit | 31d156867ed3e09355dd487ecd0f919a6ce53be3 (patch) | |
tree | 9c4d587068981ac2e48c29fdd7ceecfd61909d57 | |
parent | aa8552e956b3e69c0854c675f7c786f1270de212 (diff) | |
parent | 1926c3db043289dce090e44fc82d45635e12b9b7 (diff) | |
download | ybd-31d156867ed3e09355dd487ecd0f919a6ce53be3.tar.gz |
Merge branch 'benbrown/note-fixes' into 'master'
Miscellaneous/release note fixes
See merge request !359
-rw-r--r-- | ybd/morphs.py | 5 | ||||
-rw-r--r-- | ybd/pots.py | 5 | ||||
-rw-r--r-- | ybd/release_note.py | 42 |
3 files changed, 29 insertions, 23 deletions
diff --git a/ybd/morphs.py b/ybd/morphs.py index a9aa035..203401d 100644 --- a/ybd/morphs.py +++ b/ybd/morphs.py @@ -35,7 +35,10 @@ class Morphs(object): for path in sorted(files): data = self._load(path) if data is not None: - data['path'] = self._demorph(path[2:]) + path = self._demorph(path) + if path.startswith('./'): + path = path[2:] + data['path'] = path self._fix_keys(data) self._tidy_and_insert_recursively(data) diff --git a/ybd/pots.py b/ybd/pots.py index d3641fb..3e37419 100644 --- a/ybd/pots.py +++ b/ybd/pots.py @@ -32,7 +32,7 @@ class Pots(object): self._data = self._load_pots(config['filename']) else: log('DEFINITIONS', 'Loading definitions from morph files') - self._data = Morphs()._data + self._data = Morphs(directory=directory)._data self._trees = {} self._set_trees() @@ -79,7 +79,8 @@ class Pots(object): try: with open(os.path.join(config['artifacts'], '.trees')) as f: text = f.read() - self._trees = yaml.safe_load(text) + if text: + self._trees = yaml.safe_load(text) count = 0 for path in self._data: dn = self._data[path] diff --git a/ybd/release_note.py b/ybd/release_note.py index 8233d5d..eeecdf7 100644 --- a/ybd/release_note.py +++ b/ybd/release_note.py @@ -20,7 +20,9 @@ import tempfile import app from app import chdir, config, log from morphs import Morphs -from repos import explore, get_last_tag, get_repo_name, mirror, mirror_has_ref +from repos import ( + explore, get_last_tag, get_repo_name, mirror, mirror_has_ref, update_mirror +) def do_release_note(release_note): @@ -59,20 +61,17 @@ def do_release_note(release_note): def log_changes(dn, tmpdir, old_defs, ref): do_git_log = False - old_def = old_defs.get(dn['path']) + old_def = old_defs.get(dn['path'], {}) log_file = os.path.join(tmpdir, dn['name']) with open(log_file, 'w') as f: - keys = set(dn) - set(['tree', 'cache']) + keys = set(dn) - set(['tree', 'cache', 'repourl']) for key in keys: - try: - old_value = old_def.get(key) - except: - old_value = None + old_value = old_def.get(key) if dn[key] != old_value: f.write('[%s] Value changed: %s\n' % (dn['path'], key)) - if type(dn[key]) is str: + if type(dn[key]) in (str, unicode, int): f.write('%s | %s\n' % (old_value, dn[key])) - if type(dn[key]) is not str and type(dn[key]) is not float: + if type(dn[key]) not in (str, unicode, int, float): if old_value: for x in old_value: f.write(repr(x)) @@ -82,21 +81,24 @@ def log_changes(dn, tmpdir, old_defs, ref): f.write(repr(x)) f.write('\n\n') - if dn.get('kind', 'chunk') == 'chunk' and config.get('release-cmd'): + if (dn.get('kind', 'chunk') == 'chunk' and dn.get('repo') and + config.get('release-cmd') and old_def): log(dn, 'Logging git change history', tmpdir) try: gitdir = os.path.join(config['gits'], get_repo_name(dn['repo'])) - if not os.path.exists(gitdir): - mirror(dn['name'], dn['repo']) - elif not mirror_has_ref(gitdir, ref): - update_mirror(dn['name'], dn['repo'], gitdir) - with chdir(gitdir): - text = dn['ref'] + '..' - if old_def and old_def.get('ref'): - text += old_def['ref'] - f.write(check_output(config['release-command'] + [text])) - except: + cur_ref = dn.get('sha', dn['ref']) + old_ref = old_def.get('sha', old_def['ref']) + if old_ref != cur_ref: + if not os.path.exists(gitdir): + mirror(dn['name'], dn['repo']) + elif not mirror_has_ref(gitdir, cur_ref) or \ + not mirror_has_ref(gitdir, old_ref): + update_mirror(dn['name'], dn['repo'], gitdir) + with chdir(gitdir): + text = cur_ref + '..' + old_ref + f.write(check_output(config['release-cmd'] + [text])) + except Exception: log(dn, 'WARNING: Failed to log git changes') if os.stat(log_file).st_size == 0: os.remove(log_file) |