refactor(tools): modularize CLI with urfave/cli/v2, externalise template metadata
- Split monolithic build-preview.go into modular packages: tools.go (entry), cli/ (list/create/delete/preview commands), config/ (JSON loading), preview/ (rendering engine, funcs, locale) - Extract all template metadata into data/templates_config.json as single source of truth — no hardcoded template data in Go - Replace hand-rolled CLI parsing with github.com/urfave/cli/v2 - Add sensible defaults for --folder (../themes) and --config (./data/templates_config.json) — most commands now run bare - Add type-coercing gt/lt/ge/le template funcs for JSON float64 - Fix AppUrl to gitea.com matching official template convention - rendered.js now exports __REGISTRY__ and __PARAMS__ alongside __RENDERED__ — preview/index.html reads all from single source - Cross-validate all 11 template data contexts against official Gitea source (services/mailer/*.go + templates/mail/*.tmpl) - Update all docs (README, AGENTS, CONTRIBUTING, 5 languages) to reflect new CLI workflow with create scaffolding command Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
77854ee0ed
commit
0bf982ffb9
30 files changed
+1274
-540
No files matched your search
+7
-9
@@ -8,12 +8,10 @@ Thanks for your interest in contributing! This project aims to provide a diverse
|
||||
|
||||
### Adding a New Style
|
||||
|
||||
1. Create the style directory: `themes/<your-style-name>/`
|
||||
2. Copy the directory structure from an existing style
|
||||
3. Implement all 11 `.tmpl` files with your unique visual design
|
||||
4. Regenerate preview data: `go run ./tools/build-preview.go` — the build script auto-discovers all theme directories under `themes/`
|
||||
5. Add your theme as an `<option>` in `<select id="sel-theme">` in `preview/index.html`
|
||||
6. Submit a PR with screenshots of rendered emails
|
||||
1. Scaffold the new style: `cd tools && go run . create <your-style-name>` — this creates the directory structure with placeholder `.tmpl` files for all 11 email types
|
||||
2. Edit each `.tmpl` file in `themes/<your-style-name>/` with your unique visual design
|
||||
3. Regenerate the preview: `cd tools && go run . preview all` — the build script auto-discovers all theme directories under `themes/` and generates the theme selector dynamically
|
||||
4. Submit a PR with screenshots of rendered emails
|
||||
|
||||
### Style Guidelines
|
||||
|
||||
@@ -31,7 +29,7 @@ If a template doesn't render correctly:
|
||||
1. Check that all referenced Go template variables exist — compare against the Gitea source mail templates
|
||||
2. Verify translation keys match Gitea's locale files
|
||||
3. Confirm `.DisplayName` isn't used in templates that lack it
|
||||
4. Regenerate the preview: `go run ./tools/build-preview.go`
|
||||
4. Regenerate the preview: `cd tools && go run . preview all`
|
||||
5. Open an issue with: the style name, which email type, and the error or unexpected output
|
||||
|
||||
### Documentation Improvements
|
||||
@@ -53,10 +51,10 @@ No build tools or dependencies are needed — these are raw Go HTML templates.
|
||||
### Regenerating Previews
|
||||
|
||||
```bash
|
||||
go run ./tools/build-preview.go
|
||||
cd tools && go run . preview all
|
||||
```
|
||||
|
||||
This renders all templates (themes auto-discovered from the themes/ directory) using Go's native `html/template` package and writes the output to `preview/rendered.js`.
|
||||
This renders all templates (themes auto-discovered from the themes/ directory) using Go's native `html/template` package and writes the output to `preview/rendered.js`. The `--folder` and `--config` flags default to `../themes` and `./data/templates_config.json` respectively — override them only when using a custom layout.
|
||||
|
||||
### Integration Testing
|
||||
|
||||
|
||||
Reference in new issue
Block a user