42 lines
2.2 KiB
Markdown
42 lines
2.2 KiB
Markdown
# newproject
|
|
|
|
Composes a project from the templates in this organization: `infra` at the root, then `backend-python`, `frontend-svelte` and `caddy` on top, each with its own answers file in `.copier/`.
|
|
|
|
```sh
|
|
source ~/projects/templates/newproject/shell.sh
|
|
newproject ~/projects/my-thing
|
|
updateproject # every part
|
|
updateproject backend # one part
|
|
```
|
|
|
|
`newproject` asks for the parts, the backend language, the frontend framework and how the frontend is served, then hands over to each template's own questions. Every prompt has a flag for non-interactive use:
|
|
|
|
```sh
|
|
newproject ~/projects/my-thing --parts backend,frontend,caddy --backend python --frontend svelte --serve bun --defaults
|
|
```
|
|
|
|
One part alone is rendered at the root of the project; two parts live in `backend/` and `frontend/`. After rendering, `make env` creates `.env` and every `docker-compose.override.yml` from their examples. `updateproject` needs a clean working tree and commits each part's update separately, so the next part starts from a clean tree again; conflicts stay in those commits for you to resolve. Templates are cloned from `https://git.kotikot.com/templates` unless `TEMPLATES_DIR` points at a directory with local checkouts; `TEMPLATES_REF=HEAD` renders their working trees instead of the latest tag.
|
|
|
|
## Renovate
|
|
|
|
A new repo needs the `renovate`, `wait-3d` and `deps-code` labels before the bot
|
|
ever runs against it: Renovate fails on a label that does not exist, and until
|
|
today these were created by hand for every repo.
|
|
|
|
```sh
|
|
giteaproject ms-agents/my-thing
|
|
```
|
|
|
|
It creates the labels and, if the repo has no `renovate.jsonc` yet, commits one
|
|
that is nothing but an `extends` on the shared preset in `templates/renovate`.
|
|
Projects rendered by `newproject` already carry that file from the `infra`
|
|
template, so for them the command only does the labels.
|
|
|
|
**Extending the preset does not subscribe the repo to anything.** The bot walks
|
|
an explicit list, so the repo also has to be added to `repositories` in
|
|
`projects/personal/renovate/renovate-config.js` of `infra/komodo`, and the
|
|
`renovate` team of its organization needs write access to it. Miss that step and
|
|
the config sits there doing nothing, silently.
|
|
|
|
Requires `uv`; `bun`, `docker` and `pre-commit` are used by the generated projects.
|