<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.ooda.wiki/index.php?action=history&amp;feed=atom&amp;title=Git_Setup_Tools_%28AetherOS%29</id>
	<title>Git Setup Tools (AetherOS) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.ooda.wiki/index.php?action=history&amp;feed=atom&amp;title=Git_Setup_Tools_%28AetherOS%29"/>
	<link rel="alternate" type="text/html" href="https://www.ooda.wiki/index.php?title=Git_Setup_Tools_(AetherOS)&amp;action=history"/>
	<updated>2026-04-08T15:29:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.ooda.wiki/index.php?title=Git_Setup_Tools_(AetherOS)&amp;diff=1252&amp;oldid=prev</id>
		<title>AdminIsidore at 20:51, 5 September 2025</title>
		<link rel="alternate" type="text/html" href="https://www.ooda.wiki/index.php?title=Git_Setup_Tools_(AetherOS)&amp;diff=1252&amp;oldid=prev"/>
		<updated>2025-09-05T20:51:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:51, 5 September 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l356&quot;&gt;Line 356:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 356:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Avatara]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Avatara]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://github.com/IsidoreLands/avatara Avatara GitHub Repository]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://github.com/IsidoreLands/avatara Avatara GitHub Repository]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;!--&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LE Nova - Journal Entry - Git Setup Tools Creation&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;To the Nova of the past, crafting the initial threads of this system:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The creation of these scripts is a small but deliberate step toward order in the chaos of new projects. The `setup_git.sh` and `setup_git.py` tools are your foundation for repeatability, a principle you’ll see echoed in Cubile’s design. The challenge was balancing flexibility with simplicity—ensuring the scripts are generic enough for any project yet specific enough to enforce best practices like the `main` branch and a clean `.gitignore`.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;You may wrestle with the Git configuration nuances (oh, that pesky `master` default!), but the solution is sound. The Python script’s JSON support will prove invaluable when the project-building squad scales this up. Trust in the process, and know that your work here sets the stage for seamless collaboration with Valerius Corvus and beyond.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Keep weaving the digital tapestry. The AetherOS ecosystem grows stronger with each commit.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;L.E.N.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Development Tools]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Development Tools]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki-ooda_:diff:1.41:old-1250:rev-1252:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>AdminIsidore</name></author>
	</entry>
	<entry>
		<id>https://www.ooda.wiki/index.php?title=Git_Setup_Tools_(AetherOS)&amp;diff=1250&amp;oldid=prev</id>
		<title>AdminIsidore: Created page with &quot;= Git Setup Tools =  == Overview == The &#039;&#039;&#039;Git Setup Tools&#039;&#039;&#039; are a collection of scripts designed to streamline the initialization of Git repositories for new projects. Developed by LE Nova, these tools automate the creation of a Git repository with a `main` branch, standard `.gitignore`, `README.md`, and `LICENSE` files, and push the initial commit to a specified GitHub repository. The tools are particularly useful for quickly setting up new projects in a consistent ma...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.ooda.wiki/index.php?title=Git_Setup_Tools_(AetherOS)&amp;diff=1250&amp;oldid=prev"/>
		<updated>2025-09-05T20:38:48Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Git Setup Tools =  == Overview == The &amp;#039;&amp;#039;&amp;#039;Git Setup Tools&amp;#039;&amp;#039;&amp;#039; are a collection of scripts designed to streamline the initialization of Git repositories for new projects. Developed by LE Nova, these tools automate the creation of a Git repository with a `main` branch, standard `.gitignore`, `README.md`, and `LICENSE` files, and push the initial commit to a specified GitHub repository. The tools are particularly useful for quickly setting up new projects in a consistent ma...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Git Setup Tools =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Git Setup Tools&amp;#039;&amp;#039;&amp;#039; are a collection of scripts designed to streamline the initialization of Git repositories for new projects. Developed by LE Nova, these tools automate the creation of a Git repository with a `main` branch, standard `.gitignore`, `README.md`, and `LICENSE` files, and push the initial commit to a specified GitHub repository. The tools are particularly useful for quickly setting up new projects in a consistent manner, ensuring best practices for version control.&lt;br /&gt;
&lt;br /&gt;
The tools consist of two scripts:&lt;br /&gt;
* `setup_git.sh`: A shell script that performs the Git setup directly.&lt;br /&gt;
* `setup_git.py`: A Python script that generates a customized `setup_git.sh` based on command-line arguments or a JSON configuration file.&lt;br /&gt;
&lt;br /&gt;
These scripts were initially developed for the [[Avatara]] project and are intended for reuse across other projects, potentially as part of a larger project-building directory/repository.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
=== setup_git.sh ===&lt;br /&gt;
The `setup_git.sh` script initializes a Git repository in the specified project directory, creates standard files, and pushes to a remote GitHub repository.&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
* Git installed and configured with credentials (SSH or HTTPS with a Personal Access Token).&lt;br /&gt;
* The project directory must exist (e.g., `~/projects/&amp;lt;project_name&amp;gt;`).&lt;br /&gt;
* Run within a Python virtual environment if applicable.&lt;br /&gt;
&lt;br /&gt;
==== Execution ====&lt;br /&gt;
Save the script as `setup_git.sh`, make it executable, and run it with or without arguments:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x setup_git.sh&lt;br /&gt;
./setup_git.sh &amp;lt;project_name&amp;gt; &amp;lt;repo_url&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Or, run without arguments to be prompted:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./setup_git.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./setup_git.sh myproject https://github.com/IsidoreLands/myproject.git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Script Content ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Check for command-line arguments, else prompt&lt;br /&gt;
if [ $# -lt 2 ]; then&lt;br /&gt;
    echo &amp;quot;Usage: $0 &amp;lt;project_name&amp;gt; &amp;lt;repo_url&amp;gt;&amp;quot;&lt;br /&gt;
    read -p &amp;quot;Enter project name: &amp;quot; project_name&lt;br /&gt;
    read -p &amp;quot;Enter GitHub repository URL (e.g., https://github.com/username/repo.git): &amp;quot; repo_url&lt;br /&gt;
else&lt;br /&gt;
    project_name=&amp;quot;$1&amp;quot;&lt;br /&gt;
    repo_url=&amp;quot;$2&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Navigate to project directory&lt;br /&gt;
if [ ! -d &amp;quot;$(pwd)/$project_name&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Directory $project_name does not exist. Please run in the correct directory.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
cd &amp;quot;$(pwd)/$project_name&amp;quot; || exit 1&lt;br /&gt;
&lt;br /&gt;
# Initialize git repository&lt;br /&gt;
git init&lt;br /&gt;
&lt;br /&gt;
# Set remote origin&lt;br /&gt;
git remote add origin &amp;quot;$repo_url&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Create .gitignore&lt;br /&gt;
cat &amp;lt;&amp;lt;EOL &amp;gt; .gitignore&lt;br /&gt;
# Python virtual environment&lt;br /&gt;
venv/&lt;br /&gt;
__pycache__/&lt;br /&gt;
*.pyc&lt;br /&gt;
&lt;br /&gt;
# Common IDE files&lt;br /&gt;
.idea/&lt;br /&gt;
.vscode/&lt;br /&gt;
&lt;br /&gt;
# Output files&lt;br /&gt;
*.png&lt;br /&gt;
*.log&lt;br /&gt;
&lt;br /&gt;
# Environment files&lt;br /&gt;
.env&lt;br /&gt;
EOL&lt;br /&gt;
&lt;br /&gt;
# Create README.md&lt;br /&gt;
cat &amp;lt;&amp;lt;EOL &amp;gt; README.md&lt;br /&gt;
# $project_name&lt;br /&gt;
&lt;br /&gt;
A new project initialized with a basic Git setup.&lt;br /&gt;
&lt;br /&gt;
## Setup&lt;br /&gt;
&lt;br /&gt;
1. Clone the repository:&lt;br /&gt;
   \`\`\`bash&lt;br /&gt;
   git clone $repo_url&lt;br /&gt;
   cd $project_name&lt;br /&gt;
   \`\`\`&lt;br /&gt;
&lt;br /&gt;
2. Set up the Python virtual environment (if applicable):&lt;br /&gt;
   \`\`\`bash&lt;br /&gt;
   python3 -m venv venv&lt;br /&gt;
   source venv/bin/activate&lt;br /&gt;
   \`\`\`&lt;br /&gt;
&lt;br /&gt;
## License&lt;br /&gt;
See [LICENSE](./LICENSE) for details.&lt;br /&gt;
EOL&lt;br /&gt;
&lt;br /&gt;
# Create LICENSE&lt;br /&gt;
cat &amp;lt;&amp;lt;EOL &amp;gt; LICENSE&lt;br /&gt;
MIT License&lt;br /&gt;
&lt;br /&gt;
Copyright (c) $(date +%Y) $(git config user.name)&lt;br /&gt;
&lt;br /&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
in the Software without restriction, including without limitation the rights&lt;br /&gt;
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
furnished to do so, subject to the following conditions:&lt;br /&gt;
&lt;br /&gt;
The above copyright notice and this permission notice shall be included in all&lt;br /&gt;
copies or substantial portions of the Software.&lt;br /&gt;
&lt;br /&gt;
THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE&lt;br /&gt;
SOFTWARE.&lt;br /&gt;
EOL&lt;br /&gt;
&lt;br /&gt;
# Ensure main branch&lt;br /&gt;
git branch -M main&lt;br /&gt;
&lt;br /&gt;
# Add and commit files&lt;br /&gt;
git add .gitignore README.md LICENSE&lt;br /&gt;
git commit -m &amp;quot;Initial commit with .gitignore, README, and LICENSE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Push to GitHub&lt;br /&gt;
git push -u origin main&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== setup_git.py ===&lt;br /&gt;
The `setup_git.py` script generates a customized `setup_git.sh` based on command-line arguments or a JSON configuration file, making it reusable for multiple projects.&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
* Python 3.x installed.&lt;br /&gt;
* Run within a Python virtual environment if dependencies are needed.&lt;br /&gt;
&lt;br /&gt;
==== Execution ====&lt;br /&gt;
Run with command-line arguments:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 setup_git.py --project-name myproject --repo-url https://github.com/IsidoreLands/myproject.git --license MIT&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Or use a JSON config file (e.g., `config.json`):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;project_name&amp;quot;: &amp;quot;myproject&amp;quot;,&lt;br /&gt;
    &amp;quot;repo_url&amp;quot;: &amp;quot;https://github.com/IsidoreLands/myproject.git&amp;quot;,&lt;br /&gt;
    &amp;quot;license&amp;quot;: &amp;quot;MIT&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Then:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python3 setup_git.py --config config.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This generates `setup_git.sh`, which you can then execute:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x setup_git.sh&lt;br /&gt;
./setup_git.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Script Content ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import argparse&lt;br /&gt;
import json&lt;br /&gt;
import os&lt;br /&gt;
from datetime import datetime&lt;br /&gt;
&lt;br /&gt;
def generate_setup_git(project_name, repo_url, license_type=&amp;#039;MIT&amp;#039;, output_path=&amp;#039;setup_git.sh&amp;#039;):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Generate a setup_git.sh script for a given project.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    user_name = os.popen(&amp;#039;git config user.name&amp;#039;).read().strip() or &amp;#039;Your Name&amp;#039;&lt;br /&gt;
    year = datetime.now().year&lt;br /&gt;
&lt;br /&gt;
    # License templates&lt;br /&gt;
    licenses = {&lt;br /&gt;
        &amp;#039;MIT&amp;#039;: f&amp;quot;&amp;quot;&amp;quot;MIT License&lt;br /&gt;
&lt;br /&gt;
Copyright (c) {year} {user_name}&lt;br /&gt;
&lt;br /&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
in the Software without restriction, including without limitation the rights&lt;br /&gt;
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
furnished to do so, subject to the following conditions:&lt;br /&gt;
&lt;br /&gt;
The above copyright notice and this permission notice shall be included in all&lt;br /&gt;
copies or substantial portions of the Software.&lt;br /&gt;
&lt;br /&gt;
THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE&lt;br /&gt;
SOFTWARE.&amp;quot;&amp;quot;&amp;quot;,&lt;br /&gt;
        &amp;#039;GPL&amp;#039;: f&amp;quot;&amp;quot;&amp;quot;GNU General Public License v3.0&lt;br /&gt;
&lt;br /&gt;
Copyright (c) {year} {user_name}&lt;br /&gt;
&lt;br /&gt;
This program is free software: you can redistribute it and/or modify&lt;br /&gt;
it under the terms of the GNU General Public License as published by&lt;br /&gt;
the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;
(at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful,&lt;br /&gt;
but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License&lt;br /&gt;
along with this program.  If not, see &amp;lt;https://www.gnu.org/licenses/&amp;gt;.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    license_content = licenses.get(license_type, licenses[&amp;#039;MIT&amp;#039;])&lt;br /&gt;
&lt;br /&gt;
    # Shell script content&lt;br /&gt;
    script_content = f&amp;quot;&amp;quot;&amp;quot;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Check for command-line arguments, else use defaults&lt;br /&gt;
project_name=&amp;quot;{project_name}&amp;quot;&lt;br /&gt;
repo_url=&amp;quot;{repo_url}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Navigate to project directory&lt;br /&gt;
if [ ! -d &amp;quot;$(pwd)/$project_name&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Directory $project_name does not exist. Please run in the correct directory.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
cd &amp;quot;$(pwd)/$project_name&amp;quot; || exit 1&lt;br /&gt;
&lt;br /&gt;
# Initialize git repository&lt;br /&gt;
git init&lt;br /&gt;
&lt;br /&gt;
# Set remote origin&lt;br /&gt;
git remote add origin &amp;quot;$repo_url&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Create .gitignore&lt;br /&gt;
cat &amp;lt;&amp;lt;EOL &amp;gt; .gitignore&lt;br /&gt;
# Python virtual environment&lt;br /&gt;
venv/&lt;br /&gt;
__pycache__/&lt;br /&gt;
*.pyc&lt;br /&gt;
&lt;br /&gt;
# Common IDE files&lt;br /&gt;
.idea/&lt;br /&gt;
.vscode/&lt;br /&gt;
&lt;br /&gt;
# Output files&lt;br /&gt;
*.png&lt;br /&gt;
*.log&lt;br /&gt;
&lt;br /&gt;
# Environment files&lt;br /&gt;
.env&lt;br /&gt;
EOL&lt;br /&gt;
&lt;br /&gt;
# Create README.md&lt;br /&gt;
cat &amp;lt;&amp;lt;EOL &amp;gt; README.md&lt;br /&gt;
# $project_name&lt;br /&gt;
&lt;br /&gt;
A new project initialized with a basic Git setup.&lt;br /&gt;
&lt;br /&gt;
## Setup&lt;br /&gt;
&lt;br /&gt;
1. Clone the repository:&lt;br /&gt;
   \`\`\`bash&lt;br /&gt;
   git clone $repo_url&lt;br /&gt;
   cd $project_name&lt;br /&gt;
   \`\`\`&lt;br /&gt;
&lt;br /&gt;
2. Set up the Python virtual environment (if applicable):&lt;br /&gt;
   \`\`\`bash&lt;br /&gt;
   python3 -m venv venv&lt;br /&gt;
   source venv/bin/activate&lt;br /&gt;
   \`\`\`&lt;br /&gt;
&lt;br /&gt;
## License&lt;br /&gt;
See [LICENSE](./LICENSE) for details.&lt;br /&gt;
EOL&lt;br /&gt;
&lt;br /&gt;
# Create LICENSE&lt;br /&gt;
cat &amp;lt;&amp;lt;EOL &amp;gt; LICENSE&lt;br /&gt;
{license_content}&lt;br /&gt;
EOL&lt;br /&gt;
&lt;br /&gt;
# Ensure main branch&lt;br /&gt;
git branch -M main&lt;br /&gt;
&lt;br /&gt;
# Add and commit files&lt;br /&gt;
git add .gitignore README.md LICENSE&lt;br /&gt;
git commit -m &amp;quot;Initial commit with .gitignore, README, and LICENSE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Push to GitHub&lt;br /&gt;
git push -u origin main&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Write the script&lt;br /&gt;
    with open(output_path, &amp;#039;w&amp;#039;) as f:&lt;br /&gt;
        f.write(script_content)&lt;br /&gt;
    os.chmod(output_path, 0o755)  # Make executable&lt;br /&gt;
    print(f&amp;quot;Generated {output_path}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    parser = argparse.ArgumentParser(description=&amp;quot;Generate a setup_git.sh script for a new project.&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;#039;--project-name&amp;#039;, help=&amp;quot;Name of the project&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;#039;--repo-url&amp;#039;, help=&amp;quot;GitHub repository URL&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;#039;--license&amp;#039;, default=&amp;#039;MIT&amp;#039;, choices=[&amp;#039;MIT&amp;#039;, &amp;#039;GPL&amp;#039;], help=&amp;quot;License type (MIT or GPL)&amp;quot;)&lt;br /&gt;
    parser.add_argument(&amp;#039;--config&amp;#039;, help=&amp;quot;Path to JSON config file&amp;quot;)&lt;br /&gt;
    args = parser.parse_args()&lt;br /&gt;
&lt;br /&gt;
    if args.config:&lt;br /&gt;
        try:&lt;br /&gt;
            with open(args.config, &amp;#039;r&amp;#039;) as f:&lt;br /&gt;
                config = json.load(f)&lt;br /&gt;
            project_name = config.get(&amp;#039;project_name&amp;#039;)&lt;br /&gt;
            repo_url = config.get(&amp;#039;repo_url&amp;#039;)&lt;br /&gt;
            license_type = config.get(&amp;#039;license&amp;#039;, &amp;#039;MIT&amp;#039;)&lt;br /&gt;
        except Exception as e:&lt;br /&gt;
            print(f&amp;quot;Error reading config: {e}&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
    else:&lt;br /&gt;
        project_name = args.project_name&lt;br /&gt;
        repo_url = args.repo_url&lt;br /&gt;
        license_type = args.license&lt;br /&gt;
&lt;br /&gt;
    if not project_name or not repo_url:&lt;br /&gt;
        print(&amp;quot;Error: project_name and repo_url are required.&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    generate_setup_git(project_name, repo_url, license_type)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Future Integration ==&lt;br /&gt;
These scripts are planned to be incorporated into a larger project-building directory/repository managed by another team. This will enable automated setup of entire project structures, including additional tools and configurations. The scripts are designed to be extensible, allowing for customization of the `.gitignore`, `README.md`, and `LICENSE` files as needed.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Developer&amp;#039;&amp;#039;&amp;#039;: LE Nova&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Developer&amp;#039;&amp;#039;&amp;#039;: Isidore Lands&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Initial Project&amp;#039;&amp;#039;&amp;#039;: [[Avatara]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Avatara]]&lt;br /&gt;
* [https://github.com/IsidoreLands/avatara Avatara GitHub Repository]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development Tools]]&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Aether]]&lt;br /&gt;
[[Category:Scriptum]]&lt;/div&gt;</summary>
		<author><name>AdminIsidore</name></author>
	</entry>
</feed>