go-html/cmd/codegen/main.go
Snider 6e59bf8bf8
All checks were successful
Security Scan / security (push) Successful in 7s
Test / test (push) Successful in 1m33s
refactor(conventions): replace os.ReadFile with coreio.Local, fmt.Errorf with log.E
Replace os.ReadFile in cmd/wasm/size_test.go with coreio.Local.Read().
Replace fmt.Errorf/errors.New with log.E() in codegen, cmd/wasm/register,
and cmd/codegen. Add forge.lthn.ai/core/go-io as a dependency.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 19:17:34 +00:00

43 lines
917 B
Go

// Package main provides a build-time CLI for generating Web Component JS bundles.
// Reads a JSON slot map from stdin, writes the generated JS to stdout.
//
// Usage:
//
// echo '{"H":"nav-bar","C":"main-content"}' | go run ./cmd/codegen/ > components.js
package main
import (
"encoding/json"
goio "io"
"os"
"forge.lthn.ai/core/go-html/codegen"
log "forge.lthn.ai/core/go-log"
)
func run(r goio.Reader, w goio.Writer) error {
data, err := goio.ReadAll(r)
if err != nil {
return log.E("codegen", "reading stdin", err)
}
var slots map[string]string
if err := json.Unmarshal(data, &slots); err != nil {
return log.E("codegen", "invalid JSON", err)
}
js, err := codegen.GenerateBundle(slots)
if err != nil {
return err
}
_, err = goio.WriteString(w, js)
return err
}
func main() {
if err := run(os.Stdin, os.Stdout); err != nil {
log.Error("codegen failed", "err", err)
os.Exit(1)
}
}