74 lines
2.7 KiB
Markdown
74 lines
2.7 KiB
Markdown
# devarea
|
|
|
|
Workspace management repo for TTG: use it to clone the whole workspace in
|
|
its category-folder structure, and to verify that the clone list is in sync
|
|
with the Gitea server (`git.teletypegames.org`).
|
|
|
|
## Quick start
|
|
|
|
On a fresh machine:
|
|
|
|
```sh
|
|
mkdir TTG && cd TTG
|
|
git clone ssh://git@git.teletypegames.org:2222/tools/devarea
|
|
cd devarea
|
|
make setup # install tea + clone all repos + check
|
|
```
|
|
|
|
Repos are cloned into the parent directory of the devarea checkout (the
|
|
workspace root). To use a different target: `make clone ROOT=/path/to/workspace`.
|
|
|
|
## Make targets
|
|
|
|
| Target | What it does |
|
|
|---|---|
|
|
| `make help` | List available targets (default) |
|
|
| `make tea` | Install tea (Gitea CLI) via Homebrew if missing, and verify the login |
|
|
| `make clone` | Clone all repos based on `scripts/repos.list`; existing ones are skipped |
|
|
| `make check` | Compare the clone list against the server (`tea repo list --output json`) |
|
|
| `make setup` | All three in one: tea + clone + check |
|
|
|
|
## Scripts
|
|
|
|
All scripts live under `scripts/` and can also be run standalone:
|
|
|
|
- **`install-tea.sh`** — installs tea and verifies the login. Without a
|
|
login it prints the setup command (`tea login add --name ttg --url
|
|
https://git.teletypegames.org`).
|
|
- **`clone-repos.sh [target-dir]`** — clones every line of `repos.list`
|
|
into the given structure. Idempotent: existing clones are skipped.
|
|
- **`check-repos.sh`** — checks in both directions: repos that exist on
|
|
the server but are missing from the list (**MISSING**), and repos listed
|
|
as Gitea repos but absent from the server (**STALE**). Exits with 1 on
|
|
any hit, so it is CI-friendly.
|
|
|
|
## Data files
|
|
|
|
- **`scripts/repos.list`** — the repos to clone, one per line in
|
|
`<workspace-relative path>|<clone URL>` form. New repo on the server →
|
|
add it here (`make check` will complain if it is missing). Non-Gitea
|
|
repos (GitHub) may also appear; the check skips those.
|
|
- **`scripts/repos.ignore`** — repos that exist on the server but are
|
|
intentionally not cloned (`<owner>/<name>`); the check does not report
|
|
these as missing.
|
|
|
|
## Workspace structure
|
|
|
|
```
|
|
TTG/
|
|
├── devarea/ # this repo
|
|
├── teletypegames/ # public site monorepo (GitHub)
|
|
├── wiki-pages/ # wiki mirror (Grav)
|
|
├── archive/ # retired projects
|
|
├── demos/ # engine demos, experiments
|
|
├── games/ # games
|
|
├── media/ # assets, images (not git)
|
|
├── tools/ # standalone tools, infra
|
|
├── tools_bbs/ # BBS-related repos
|
|
├── tools_build/ # engine/build toolchains (*-tools)
|
|
└── tools_libs/ # own libraries (inkwell, rubbs, gorpg)
|
|
```
|
|
|
|
The mapping between repos and wiki pages is described in
|
|
[WIKI_CONNECTION.md](WIKI_CONNECTION.md).
|