caddy: add config and scripts
This commit is contained in:
61
scripts/add
Executable file
61
scripts/add
Executable file
@ -0,0 +1,61 @@
|
||||
#!/usr/bin/python3
|
||||
import argparse
|
||||
import yaml
|
||||
from jinja2 import Template
|
||||
|
||||
|
||||
def render_template(template_path, **kwargs):
|
||||
with open(template_path, "r") as file:
|
||||
template = Template(file.read())
|
||||
output = template.render(**kwargs)
|
||||
return output
|
||||
|
||||
|
||||
def process_sites_config(config_path, template_path, check_mode):
|
||||
with open(config_path, "r") as file:
|
||||
sites_config = yaml.safe_load(file)
|
||||
|
||||
total_sites = len(sites_config["sites"])
|
||||
enabled_sites = 0
|
||||
disabled_sites = 0
|
||||
|
||||
for site in sites_config["sites"]:
|
||||
# Check if site is enabled
|
||||
if site.get("enabled", True): # Default to True if 'enabled' key is not present
|
||||
enabled_sites += 1
|
||||
if not check_mode:
|
||||
rendered_content = render_template(template_path, **site)
|
||||
print(f"{rendered_content}\n")
|
||||
else:
|
||||
disabled_sites += 1
|
||||
|
||||
if check_mode:
|
||||
print(f"Total sites: {total_sites}")
|
||||
print(f"Enabled sites: {enabled_sites}")
|
||||
print(f"Disabled sites: {disabled_sites}")
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Process a sites configuration file for Caddyfiles"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--config", required=True, help="Path to the YAML configuration file"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--check",
|
||||
action="store_true",
|
||||
help="Only check statistics, do not output templates",
|
||||
)
|
||||
parser.add_argument("--template", help="Path to the Jinja2 template file")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.template is None and args.check is False:
|
||||
parser.error("--template argument is required if not using --check")
|
||||
|
||||
template_path = args.template # Replace with the actual path to your template file
|
||||
process_sites_config(args.config, template_path, args.check)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Reference in New Issue
Block a user