def diff_manifest_content(left, right, output_func, output, filters=None): left_projects = resolve_manifest(open_xml(left), filters) right_projects = resolve_manifest(open_xml(right), filters) left_name = os.path.split(left.rstrip(os.sep))[1] right_name = os.path.split(right.rstrip(os.sep))[1] only_in_left = [] # list of projects that are only on the left only_in_right = [] # ditto, right in_both_sides = [] # list of paths that are on both sides different = [] # list of L/R pairs same = [] for l_key in sorted(left_projects.keys()): if l_key not in right_projects.keys(): only_in_left.append(left_projects[l_key]) else: in_both_sides.append(l_key) for r_key in sorted(right_projects.keys()): if r_key not in left_projects.keys(): only_in_right.append(right_projects[r_key]) for key in in_both_sides: if left_projects[key] == right_projects[key]: same.append(left_projects[key]) else: different.append((left_projects[key], right_projects[key])) if hasattr(output, 'write'): output_func(output, same, only_in_left, only_in_right, different, left_name, right_name) else: with open(output, 'wb') as f: output_func(f, same, only_in_left, only_in_right, different, left_name, right_name)
def freeze(f, output, b2g_root, gaia_branch, gecko_branch, moz_remotes=[], moz_branch=[]): node = open_xml(f) default_remote = node.find('default').get('remote') for p in node.findall('project'): if p.get('path') == 'gecko': p.set('revision', gecko_branch) elif p.get('path') == 'gaia': p.set('revision', gaia_branch) elif p.get('remote') in moz_remotes: p.set('revision', moz_branch) elif p.get('remote', None) == None and default_remote in moz_remotes: p.set('revision', moz_branch) else: rev = revision_from_project(os.path.join(b2g_root, p.get('path'))) if p.get('revision') and p.get('revision') != rev: p.set('upstream', p.get('revision')) p.set('revision', rev) serialize_manifest(node, output)
def filter(f, output, filters): node = open_xml(f) node = filter_manifest(node, filters) serialize_manifest(node, output)
def cleanup(f, output, filters): node = open_xml(f) if filters: node = filter_manifest(node, filters) tidy_remotes(node) serialize_manifest(node, output)