From 368a4d6dc82280929f6171b75bdff8a4e2537678 Mon Sep 17 00:00:00 2001 From: Feng Zhou Date: Tue, 25 Feb 2020 14:37:12 +0800 Subject: [PATCH 1/2] {Homebrew} remove patch when upgrade --- scripts/release/homebrew/docker/formula_generate.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/scripts/release/homebrew/docker/formula_generate.py b/scripts/release/homebrew/docker/formula_generate.py index 4775d338621..97782b4e243 100644 --- a/scripts/release/homebrew/docker/formula_generate.py +++ b/scripts/release/homebrew/docker/formula_generate.py @@ -131,6 +131,8 @@ def update_formula() -> str: packs_to_remove = set() lines = text.split('\n') node_index_dict = OrderedDict() + line_idx_to_remove = set() + upgrade = False for idx, line in enumerate(lines): if line.strip().startswith("resource"): m = re.search(r'resource "(.*)" do', line) @@ -141,7 +143,10 @@ def update_formula() -> str: if line.strip().startswith("url"): #update the url of package if pack in nodes.keys(): - lines[idx] = re.sub('url ".*"', 'url "{}"'.format(nodes[pack]['url']), line, 1) + url_match = re.search(r'url "(.*)"', line) + if url_match is not None and nodes[pack]['url'] != url_match.group(1): + lines[idx] = re.sub('url ".*"', 'url "{}"'.format(nodes[pack]['url']), line, 1) + upgrade = True else: packs_to_remove.add(pack) elif line.strip().startswith("sha256"): @@ -149,7 +154,11 @@ def update_formula() -> str: if pack in nodes.keys(): lines[idx] = re.sub('sha256 ".*"', 'sha256 "{}"'.format(nodes[pack]['checksum']), line, 1) del nodes[pack] + elif line.strip().startswith(" end"): pack = None + upgrade = False + elif upgrade: # In case of upgrading, remove any patch following url and sha256 but before end + line_idx_to_remove.add(idx) elif line.strip().startswith('def install'): if nodes: # add new dependency packages @@ -159,6 +168,7 @@ def update_formula() -> str: line_idx = list(node_index_dict.items())[i][1] resource = RESOURCE_TEMPLATE.render(resource=node) lines[line_idx] = resource + '\n\n' + lines[line_idx] + lines = [line for idx, line in enumerate(lines) if idx not in line_idx_to_remove] new_text = "\n".join(lines) # remove dependency packages that are no longer needed From 69a822e65f5a65a232e0614fbfb6deca85d4ed70 Mon Sep 17 00:00:00 2001 From: Feng Zhou Date: Tue, 25 Feb 2020 07:28:32 +0000 Subject: [PATCH 2/2] fix string match --- scripts/release/homebrew/docker/formula_generate.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/release/homebrew/docker/formula_generate.py b/scripts/release/homebrew/docker/formula_generate.py index 97782b4e243..913b60a189c 100644 --- a/scripts/release/homebrew/docker/formula_generate.py +++ b/scripts/release/homebrew/docker/formula_generate.py @@ -22,7 +22,7 @@ def main(): - print('Generate formular for Azure CLI homebrew release.') + print('Generate formula for Azure CLI homebrew release.') parser = argparse.ArgumentParser(prog='formula_generator.py') parser.set_defaults(func=generate_formula) @@ -140,7 +140,7 @@ def update_formula() -> str: pack = m.group(1) node_index_dict[pack] = idx elif pack is not None: - if line.strip().startswith("url"): + if line.startswith(" url"): #update the url of package if pack in nodes.keys(): url_match = re.search(r'url "(.*)"', line) @@ -149,12 +149,12 @@ def update_formula() -> str: upgrade = True else: packs_to_remove.add(pack) - elif line.strip().startswith("sha256"): + elif line.startswith(" sha256"): #update the sha256 of package if pack in nodes.keys(): lines[idx] = re.sub('sha256 ".*"', 'sha256 "{}"'.format(nodes[pack]['checksum']), line, 1) del nodes[pack] - elif line.strip().startswith(" end"): + elif line.startswith(" end"): pack = None upgrade = False elif upgrade: # In case of upgrading, remove any patch following url and sha256 but before end