diff --git a/.gitea/installers/renders/README.md b/.gitea/installers/renders/README.md new file mode 100644 index 0000000..5e02b2f --- /dev/null +++ b/.gitea/installers/renders/README.md @@ -0,0 +1 @@ +shiv -c project-installer -o ../../../project-installer . diff --git a/.gitea/installers/renders/__init__.py b/.gitea/installers/renders/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/project_installer.py b/.gitea/installers/renders/build/lib/project_installer.py similarity index 100% rename from project_installer.py rename to .gitea/installers/renders/build/lib/project_installer.py diff --git a/.gitea/installers/renders/project_installer.egg-info/PKG-INFO b/.gitea/installers/renders/project_installer.egg-info/PKG-INFO new file mode 100644 index 0000000..31f4622 --- /dev/null +++ b/.gitea/installers/renders/project_installer.egg-info/PKG-INFO @@ -0,0 +1,5 @@ +Metadata-Version: 2.1 +Name: project-installer +Version: 0.1.0 +Summary: Project Installer Tool +Requires-Dist: pystache diff --git a/.gitea/installers/renders/project_installer.egg-info/SOURCES.txt b/.gitea/installers/renders/project_installer.egg-info/SOURCES.txt new file mode 100644 index 0000000..992564f --- /dev/null +++ b/.gitea/installers/renders/project_installer.egg-info/SOURCES.txt @@ -0,0 +1,9 @@ +README.md +project_installer.py +setup.py +project_installer.egg-info/PKG-INFO +project_installer.egg-info/SOURCES.txt +project_installer.egg-info/dependency_links.txt +project_installer.egg-info/entry_points.txt +project_installer.egg-info/requires.txt +project_installer.egg-info/top_level.txt \ No newline at end of file diff --git a/.gitea/installers/renders/project_installer.egg-info/dependency_links.txt b/.gitea/installers/renders/project_installer.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.gitea/installers/renders/project_installer.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/.gitea/installers/renders/project_installer.egg-info/entry_points.txt b/.gitea/installers/renders/project_installer.egg-info/entry_points.txt new file mode 100644 index 0000000..d3b5fd1 --- /dev/null +++ b/.gitea/installers/renders/project_installer.egg-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +project-installer = project_installer:main diff --git a/.gitea/installers/renders/project_installer.egg-info/requires.txt b/.gitea/installers/renders/project_installer.egg-info/requires.txt new file mode 100644 index 0000000..27d7fbb --- /dev/null +++ b/.gitea/installers/renders/project_installer.egg-info/requires.txt @@ -0,0 +1 @@ +pystache diff --git a/.gitea/installers/renders/project_installer.egg-info/top_level.txt b/.gitea/installers/renders/project_installer.egg-info/top_level.txt new file mode 100644 index 0000000..ec22d66 --- /dev/null +++ b/.gitea/installers/renders/project_installer.egg-info/top_level.txt @@ -0,0 +1 @@ +project_installer diff --git a/.gitea/installers/renders/project_installer.py b/.gitea/installers/renders/project_installer.py new file mode 100644 index 0000000..9b66caa --- /dev/null +++ b/.gitea/installers/renders/project_installer.py @@ -0,0 +1,61 @@ +import os +import random +import pystache +import argparse +import re + +def render_templates(template_dir, project_name): + import pystache # Import after ensuring it's installed + + # Generate a random port number + port = random.randint(8900, 9400) + + # Mustache data (dynamic placeholders) + data = { + "PROJECT_NAME": project_name, + "PORT": port + } + + # Define a regex for detecting [[ ... ]] custom placeholders + pattern = re.compile(r"\[\[(.*?)\]\]") + + # Process all .tmpl files in the directory + for root, _, files in os.walk(template_dir): + for file in files: + if file.endswith(".tmpl"): + tmpl_file = os.path.join(root, file) + output_file = os.path.join(root, file.replace(".tmpl", "")) + + # Read the template file + with open(tmpl_file, 'r') as f: + template_content = f.read() + + # Replace placeholders wrapped with [[ ... ]] + def replace_placeholder(match): + key = match.group(1) + return str(data.get(key, match.group(0))) # Replace only if key exists + + rendered_content = pattern.sub(replace_placeholder, template_content) + + # Write to output file + with open(output_file, 'w') as f: + f.write(rendered_content) + print(f"Generated: {output_file}") + + +def main(): + # Parse arguments + parser = argparse.ArgumentParser(description="Render Mustache templates in a directory.") + parser.add_argument('--project-name', type=str, help='Project name (defaults to current directory name)') + parser.add_argument('--template-dir', type=str, default='.gitea/workflows', help='Template directory') + args = parser.parse_args() + + # Get the project name (current directory name if not provided) + project_name = args.project_name or os.path.basename(os.getcwd()) + + # Render templates + render_templates(args.template_dir, project_name) + +if __name__ == "__main__": + main() + diff --git a/.gitea/installers/renders/setup.py b/.gitea/installers/renders/setup.py new file mode 100644 index 0000000..67e2c1e --- /dev/null +++ b/.gitea/installers/renders/setup.py @@ -0,0 +1,14 @@ +from setuptools import setup + +setup( + name="project-installer", # Name of your package + version="0.1.0", # Version of your package + description="Project Installer Tool", # Short description + py_modules=["project_installer"], # Module(s) to include (no .py extension) + install_requires=["pystache"], # List of dependencies + entry_points={ + "console_scripts": [ + "project-installer=project_installer:main", # Entry point + ], + }, +)