150 lines
2.8 KiB
Markdown
150 lines
2.8 KiB
Markdown
# Build Instructions
|
|
|
|
## Python
|
|
|
|
### Development
|
|
```powershell
|
|
cd python
|
|
uv sync
|
|
uv pip install -e .
|
|
```
|
|
|
|
### Build Standalone Binary
|
|
```powershell
|
|
cd python
|
|
python embed_assets.py # Embeds licenses and .gitignore into main.py
|
|
uv add pyinstaller
|
|
uv run pyinstaller --onefile --name gitreposetup main.py
|
|
# Binary: dist/gitreposetup.exe
|
|
```
|
|
|
|
### Run Tests
|
|
```powershell
|
|
cd python
|
|
uv run pytest -v
|
|
uv run mypy main.py
|
|
uv run ruff check .
|
|
```
|
|
|
|
## Rust
|
|
|
|
### Development
|
|
```powershell
|
|
cd rust
|
|
cargo build
|
|
```
|
|
|
|
### Build Release Binary
|
|
```powershell
|
|
cd rust
|
|
cargo build --release
|
|
# Binary: target/release/gitreposetup.exe
|
|
```
|
|
|
|
### Run Tests
|
|
```powershell
|
|
cd rust
|
|
cargo test
|
|
cargo clippy -- -D warnings
|
|
cargo fmt --check
|
|
```
|
|
|
|
## Go
|
|
|
|
### Development
|
|
```powershell
|
|
cd go
|
|
go build -o gitreposetup.exe .
|
|
```
|
|
|
|
### Build Release Binaries (Cross-platform)
|
|
```powershell
|
|
cd go
|
|
|
|
# Windows
|
|
$env:CGO_ENABLED="0"; $env:GOOS="windows"; $env:GOARCH="amd64"; go build -o gitreposetup-windows-amd64.exe .
|
|
|
|
# Linux
|
|
$env:CGO_ENABLED="0"; $env:GOOS="linux"; $env:GOARCH="amd64"; go build -o gitreposetup-linux-amd64 .
|
|
|
|
# macOS Intel
|
|
$env:CGO_ENABLED="0"; $env:GOOS="darwin"; $env:GOARCH="amd64"; go build -o gitreposetup-darwin-amd64 .
|
|
|
|
# macOS ARM
|
|
$env:CGO_ENABLED="0"; $env:GOOS="darwin"; $env:GOARCH="arm64"; go build -o gitreposetup-darwin-arm64 .
|
|
```
|
|
|
|
### Run Tests
|
|
```powershell
|
|
cd go
|
|
go test -v ./...
|
|
go vet ./...
|
|
go fmt ./...
|
|
```
|
|
|
|
## Quick Test
|
|
|
|
After building any version, test with:
|
|
|
|
```powershell
|
|
# Create a temp directory
|
|
mkdir test-repo
|
|
cd test-repo
|
|
|
|
# Run the tool
|
|
..\python\dist\gitreposetup.exe --owner TestOrg --name TestRepo --license MIT
|
|
# Or
|
|
..\rust\target\release\gitreposetup.exe --owner TestOrg --name TestRepo --license MIT
|
|
# Or
|
|
..\go\gitreposetup.exe --owner TestOrg --name TestRepo --license MIT
|
|
|
|
# Verify
|
|
git remote -v
|
|
git log --oneline
|
|
git branch -a
|
|
cat LICENSE
|
|
```
|
|
|
|
## CI/CD Integration
|
|
|
|
The tools are designed to work in CI environments. Example Gitea workflow:
|
|
|
|
```yaml
|
|
- name: Setup repository
|
|
run: |
|
|
gitreposetup \
|
|
--owner ${{ github.repository_owner }} \
|
|
--name ${{ github.event.repository.name }} \
|
|
--deploy-type docker
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Python: ModuleNotFoundError: No module named 'yaml'
|
|
```powershell
|
|
uv add pyyaml
|
|
```
|
|
|
|
### Rust: error: linker `link.exe` not found
|
|
Install Visual Studio Build Tools with C++ development tools.
|
|
|
|
### Go: imports not found
|
|
```powershell
|
|
cd go
|
|
go mod tidy
|
|
go mod download
|
|
```
|
|
|
|
### Git push fails
|
|
This is expected if the remote doesn't exist yet. The tool will warn and configure locally. Create the remote repository in Gitea/GitHub first, then:
|
|
```powershell
|
|
git push -u origin main
|
|
git push -u origin dev
|
|
```
|
|
|
|
### Config file location
|
|
- Windows: `%USERPROFILE%\.config\GMS\.config.yaml`
|
|
- Linux/macOS: `~/.config/GMS/.config.yaml`
|
|
|
|
Edit manually or let the tool create defaults on first run.
|