# GitRepoSetup - Quick Reference ## Installation ```bash # Python cd python && uv sync # Rust cd rust && cargo build --release # Go cd go && go build ``` ## Basic Usage ```bash gitreposetup --owner --name ``` ## CLI Arguments | Argument | Type | Default | Description | |----------|------|---------|-------------| | `--owner` | string | (config) | Repository owner/org | | `--name` | string | (config) | Repository name | | `--license` | enum | MIT | MIT, GPLv3, AGPLv3, Unlicense | | `--develop-branch-name` | string | dev | Dev branch name | | `--default-gitignore` | bool | true | Use default .gitignore | | `--default-git-url` | string | (config) | Git remote URL template | | `--force` | flag | false | Force overwrite LICENSE | | `--deploy-type` | enum | - | docker, pypi, cargo, go | ## Config File **Location**: `~/.config/GMS/.config.yaml` (Windows: `%USERPROFILE%\.config\GMS\.config.yaml`) ```yaml owner: MyOrg name: "" license: MIT develop_branch: dev default_gitignore: true default_git_url: "https://git.theprivateserver.de/{owner}/{repo}.git" ``` ## What It Does 1. Init/detect git repo 2. Set `main` as default branch 3. **Remove all remotes** 4. Set `origin` to templated URL 5. Add LICENSE (if missing or `--force`) 6. Add/overwrite `.gitignore` 7. Commit ("Initial commit") 8. Create & checkout `dev` branch 9. Try push; warn if fails 10. Set up `.gitea/workflows/` structure ## Examples ```bash # Basic gitreposetup --owner PHB --name WorldTeacher # Custom license gitreposetup --owner MyOrg --name App --license GPLv3 # Python package gitreposetup --owner MyOrg --name lib --deploy-type pypi # Docker project gitreposetup --owner MyOrg --name api --deploy-type docker # Force license change gitreposetup --owner MyOrg --name old --license MIT --force ``` ## Deploy Types | Type | Workflows | Requires | Secrets | |------|-----------|----------|---------| | `pypi` | test-python, python_package-release | pyproject.toml | TOKEN, GITEA_TOKEN | | `docker` | test-{lang}, test-{lang}-docker-build, docker-release | Dockerfile | REGISTRY, DOCKER_USERNAME, TOKEN, GITEA_TOKEN | | `cargo` | test-rust, cargo-release | Cargo.toml | TOKEN, GITEA_TOKEN | | `go` | test-go, go-release | go.mod | TOKEN, GITEA_TOKEN | ## Warnings ⚠️ **Removes all existing git remotes** ⚠️ **Requires remote repo to exist in Gitea before pushing** ⚠️ **Docker workflows need root Dockerfile** ⚠️ **Secrets must be configured in Gitea before workflows work** ## After Running 1. Create remote repo in Gitea: `https://git.theprivateserver.de/{owner}/{repo}` 2. If push failed, run manually: ```bash git push -u origin main git push -u origin dev ``` 3. Configure secrets in Gitea user/org settings 4. Add Dockerfile if using `--deploy-type docker` ## Troubleshooting | Issue | Solution | |-------|----------| | "PyYAML is required" | `uv add pyyaml` or `pip install pyyaml` | | "owner and name are required" | Add to config or pass as CLI args | | "Could not push to remote" | Create repo in Gitea first, then push manually | | "Docker workflows require Dockerfile" | Add Dockerfile to repo root | ## Files Created ``` .gitea/ changelog_config.json workflows/ test-python.yml test-rust.yml test-go.yml test-*-docker-build.yml *-release.yml .gitignore (if enabled) LICENSE (if missing or --force) ``` ## Documentation - `README.md` - Full usage guide - `BUILD.md` - Build instructions - `EXAMPLES.md` - Usage examples - `STATUS.md` - Implementation status - `SUMMARY.md` - Implementation overview - `QUICKREF.md` - This file ## Links - Licenses: `licenses/MIT.txt`, `GPL-3.0.txt`, `AGPL-3.0.txt`, `Unlicense.txt` - Python: `python/main.py` - Rust: `rust/src/main.rs` - Go: `go/main.go`