From bb9fa824cc8000769a900d69ea73e80739e4d0b6 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Tue, 16 Jul 2024 14:27:05 +0300 Subject: [PATCH] script improved --- python/deployments_graph.py | 48 ++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/python/deployments_graph.py b/python/deployments_graph.py index 7d118c8..f6d9e0e 100644 --- a/python/deployments_graph.py +++ b/python/deployments_graph.py @@ -1,4 +1,5 @@ import yaml +import re # Load the YAML content from the file with open('appveyor.yml', 'r') as file: @@ -11,6 +12,7 @@ config = yaml.safe_load(appveyor_yml) branches = {} deployments = {} inactive_branches = [] +inactive_configs = {} # Extract specific branch configurations if 'for' in config: @@ -29,11 +31,13 @@ if 'branches' in config: if branch not in branches: branches[branch] = config.get('configuration', []) -# Check for inactive branches in the comments +# Check for inactive branches and configurations in the comments lines = appveyor_yml.splitlines() for i, line in enumerate(lines): + if re.match(r'#\s*-\s*(\w+)', line): + inactive_configs.setdefault(lines[i-1].strip().split()[1], []).append(re.findall(r'#\s*-\s*(\w+)', line)[0].replace('-', '_')) if line.strip().startswith('#') and i + 2 < len(lines) and 'branches:' in lines[i + 1] and 'only:' in lines[i + 2]: - inactive_branches.append(lines[i + 2].split(':')[1].strip()) + inactive_branches.append(lines[i + 2].split(':')[1].strip().replace('-', '_')) # Extract deployment configurations if 'deploy' in config: @@ -51,35 +55,41 @@ if 'for' in config: # Generate the Mermaid graph content mermaid_graph = """ graph TD - A[Common Configuration] --> B[master] + A[Common Configuration] """ # Add branches to the graph for branch in branches.keys(): - if branch != 'master': - mermaid_graph += f" A --> {branch.replace('-', '_')}\n" + branch_id = branch.replace('-', '_') + mermaid_graph += f" A --> {branch_id}\n" # Add configurations to the branches for branch, configs in branches.items(): + branch_id = branch.replace('-', '_') + for idx, config in enumerate(configs): + config_id = f"{branch_id}{idx+1}" + mermaid_graph += f" {branch_id} --> {config_id}[{config}]\n" + # Add deployments to the configurations + for deploy in deployments.get(branch, []): + configuration = deploy.get('configuration') + if configuration == config: + service = deploy.get('service', '') + mermaid_graph += f" {config_id} --> {service_id}[{deploy.get('on', {}).get('configuration', '')} on {branch}]\n" + +# Highlight inactive branches and configurations with a dotted style +for branch in inactive_branches: + mermaid_graph += f" style {branch} fill:#f96,stroke:#333,stroke-width:2px,stroke-dasharray: 5, 5\n" + +for branch, configs in inactive_configs.items(): + branch_id = branch.replace('-', '_') for config in configs: - mermaid_graph += f" {branch.replace('-', '_')} --> {branch.replace('-', '_')}{config}\n" - -# Add deployments to the configurations -for branch, deploys in deployments.items(): - for deploy in deploys: - configuration = deploy.get('configuration') - website = deploy.get('website') - if configuration and website: - mermaid_graph += f" {branch.replace('-', '_')}{configuration.replace('_', '')} --> {branch.replace('-', '_')}{website.replace('-', '_')}\n" - -# Highlight inactive branches -for inactive_branch in inactive_branches: - mermaid_graph += f" style {inactive_branch.replace('-', '_')} fill:#f96,stroke:#333,stroke-width:2px,stroke-dasharray: 5, 5\n" + config_id = f"{branch_id}_{config}" + mermaid_graph += f" style {config_id} fill:#bbf,stroke:#333,stroke-width:2px,stroke-dasharray: 5,5\n" # Add styles to the graph mermaid_graph += """ style A fill:#f9f,stroke:#333,stroke-width:2px - style B fill:#bbf,stroke:#333,stroke-width:2px """ +# Output the graph print(mermaid_graph)