Files
WorldTeacher/EXAMPLES.md
2025-11-04 15:28:26 +01:00

4.7 KiB

Examples

Basic Repository Setup

# Using config file defaults
gitreposetup --owner MyOrg --name MyApp

# Output:
# Initialized new git repository
# Set remote 'origin' to: https://git.theprivateserver.de/MyOrg/MyApp.git
# Added LICENSE: MIT
# Added/updated .gitignore
# Created initial commit
# Created and switched to branch: dev
# ⚠️  Warning: Could not push to remote. Network may be unavailable...
# ✅ Repository setup complete!

Python Package Project

gitreposetup \
  --owner MyOrg \
  --name my-python-lib \
  --license MIT \
  --deploy-type pypi

# Creates:
# - LICENSE (MIT, year: 2025, author: from git config)
# - .gitignore (Python/Rust/Go patterns)
# - .gitea/workflows/test-python.yml
# - .gitea/workflows/python_package-release.yml
# - .gitea/changelog_config.json

Rust CLI Tool

gitreposetup \
  --owner MyOrg \
  --name rust-cli \
  --license GPLv3 \
  --deploy-type cargo

# Creates:
# - LICENSE (GPLv3)
# - .gitignore
# - .gitea/workflows/test-rust.yml
# - .gitea/workflows/cargo-release.yml

Go Microservice with Docker

gitreposetup \
  --owner MyOrg \
  --name go-api \
  --license AGPLv3 \
  --deploy-type docker \
  --develop-branch-name develop

# Creates:
# - LICENSE (AGPLv3)
# - .gitignore
# - .gitea/workflows/test-go.yml
# - .gitea/workflows/test-go-docker-build.yml
# - .gitea/workflows/docker-release.yml
# - Branches: main, develop
# ⚠️  Warning: Docker workflows require a Dockerfile in the repository root.

Force Overwrite Existing LICENSE

# If LICENSE already exists and you want to change it
gitreposetup \
  --owner MyOrg \
  --name existing-repo \
  --license Unlicense \
  --force

# Replaces existing LICENSE with Unlicense

Custom Git URL Template

# For GitHub or custom Git servers
gitreposetup \
  --owner octocat \
  --name hello-world \
  --default-git-url "https://github.com/{owner}/{repo}.git"

# Set remote 'origin' to: https://github.com/octocat/hello-world.git

Config File Setup

Create ~/.config/GMS/.config.yaml:

owner: MyOrg
name: ""  # Can be overridden per-repo
license: MIT
develop_branch: dev
default_gitignore: true
default_git_url: "https://git.theprivateserver.de/{owner}/{repo}.git"

Then run without flags:

# Uses config defaults for owner, license, etc.
gitreposetup --name my-new-project

Workflow Integration

In a Gitea Workflow

name: Setup and Deploy

on:
  workflow_dispatch:
    inputs:
      repo_name:
        description: 'Repository name'
        required: true

jobs:
  setup:
    runs-on: ubuntu-latest
    steps:
      - name: Download gitreposetup
        run: |
          curl -L -o gitreposetup https://releases.example.com/gitreposetup
          chmod +x gitreposetup

      - name: Setup repository
        run: |
          ./gitreposetup \
            --owner ${{ github.repository_owner }} \
            --name ${{ github.event.inputs.repo_name }} \
            --deploy-type docker

Local Script

#!/bin/bash
# setup-new-project.sh

PROJECT_NAME=$1
DEPLOY_TYPE=${2:-docker}

if [ -z "$PROJECT_NAME" ]; then
  echo "Usage: $0 <project-name> [deploy-type]"
  exit 1
fi

mkdir "$PROJECT_NAME"
cd "$PROJECT_NAME"

gitreposetup \
  --owner MyOrg \
  --name "$PROJECT_NAME" \
  --license MIT \
  --deploy-type "$DEPLOY_TYPE"

echo "✅ Project $PROJECT_NAME ready!"
echo "Next steps:"
echo "  1. Add code to the repository"
echo "  2. Create remote in Gitea: https://git.theprivateserver.de/MyOrg/$PROJECT_NAME"
echo "  3. Push: git push -u origin main && git push -u origin dev"

Verifying Setup

# Check git configuration
git remote -v
# origin  https://git.theprivateserver.de/MyOrg/MyRepo.git (fetch)
# origin  https://git.theprivateserver.de/MyOrg/MyRepo.git (push)

git branch -a
# * dev
#   main

git log --oneline
# abc1234 Initial commit

# Check files
ls -la
# .git/
# .gitea/
# .gitignore
# LICENSE

ls .gitea/workflows/
# docker-release.yml
# test-python-docker-build.yml
# test-python.yml

Multi-Repo Batch Setup

# PowerShell script to set up multiple repos
$repos = @(
    @{name="api-gateway"; type="go"}
    @{name="user-service"; type="docker"}
    @{name="data-pipeline"; type="pypi"}
)

foreach ($repo in $repos) {
    Write-Host "Setting up $($repo.name)..."
    New-Item -ItemType Directory -Path $repo.name -Force
    Set-Location $repo.name
    
    gitreposetup `
        --owner MyOrg `
        --name $repo.name `
        --deploy-type $repo.type
    
    Set-Location ..
}

Public Domain Project

gitreposetup \
  --owner PublicOrg \
  --name open-data \
  --license Unlicense \
  --deploy-type pypi

# Creates LICENSE with Unlicense (public domain dedication)