Files
HugoBlox-kit/scripts/update_template_hugo.py

93 lines
2.7 KiB
Python

#!/usr/bin/env python3
import argparse
import re
import json
import sys
from pathlib import Path
def update_file_regex(path, pattern, replacement):
file_path = Path(path)
if not file_path.exists():
print(f"Warning: {path} not found.")
return False
content = file_path.read_text()
if re.search(pattern, content):
new_content = re.sub(pattern, replacement, content)
file_path.write_text(new_content)
print(f"Updated {path}")
return True
else:
print(f"Warning: Pattern not found in {path}")
return False
def update_devcontainer(path, new_version):
file_path = Path(path)
if not file_path.exists():
print(f"Warning: {path} not found.")
return False
try:
content = json.loads(file_path.read_text())
# Update Hugo feature version
features = content.get("features", {})
hugo_feature = features.get("ghcr.io/devcontainers/features/hugo:1")
if hugo_feature:
hugo_feature["version"] = new_version
file_path.write_text(json.dumps(content, indent=2) + "\n") # standard json formatting
print(f"Updated {path}")
return True
else:
print(f"Warning: Hugo feature not found in {path}")
return False
except Exception as e:
print(f"Error updating {path}: {e}")
return False
def main():
parser = argparse.ArgumentParser(description="Update Hugo version in template files")
parser.add_argument("version", help="New Hugo version (e.g., 0.152.2)")
args = parser.parse_args()
version = args.version
# List of templates to update
templates = [
"academic-cv",
"blog",
"documentation",
"landing-page",
"link-in-bio",
"resume"
]
for template in templates:
print(f"\nProcessing template: {template}")
template_dir = Path(f"templates/{template}")
# 1. Update hugoblox.yaml
update_file_regex(
template_dir / "hugoblox.yaml",
r"hugo_version: .*",
f"hugo_version: '{version}'"
)
# 2. Update netlify.toml
update_file_regex(
template_dir / "netlify.toml",
r'HUGO_VERSION = ".*"',
f'HUGO_VERSION = "{version}"'
)
# 3. Update devcontainer.json
update_devcontainer(
template_dir / ".devcontainer/devcontainer.json",
version
)
print(f"\nSuccessfully updated all templates to Hugo v{version}")
print("Note: .github/workflows/deploy.yml is configured to read the version dynamically from hugoblox.yaml.")
if __name__ == "__main__":
main()