tons of code

This commit is contained in:
Egor Aristov 2025-10-23 07:53:38 +03:00
parent c17f0f7322
commit 1e29c54030
Signed by: egor3f
GPG Key ID: 40482A264AAEC85F
4 changed files with 71 additions and 6 deletions

View File

@ -1,5 +1,5 @@
{{- /*gotype: efprojects.com/kitten-ipc/kitcom.genData*/ -}} {{- /*gotype: efprojects.com/kitten-ipc/kitcom.goGenData*/ -}}
// Code generated by kitcom. DO NOT EDIT. // Code generated by kitcom. DO NOT EDIT.
@ -20,7 +20,7 @@ func ({{$e.Name | receiver}} *{{$e.Name}}) {{$mtd.Name}} (
{{range $mtd.Ret}}{{.Type | typedef}}, {{end}} {{range $mtd.Ret}}{{.Type | typedef}}, {{end}}
) { ) {
return {{$e.Name | receiver}}.Ipc.Call( return {{$e.Name | receiver}}.Ipc.Call(
"{{$mtd.Name}}", {{range $mtd.Pars}}{{.Name}}, {{end}} "{{$mtd.Name}}", {{range $mtd.Params}}{{.Name}}, {{end}}
) )
} }
{{end}} {{end}}

View File

@ -9,7 +9,7 @@ import (
"text/template" "text/template"
) )
type genData struct { type goGenData struct {
PkgName string PkgName string
Api *Api Api *Api
} }
@ -19,7 +19,7 @@ type GoApiGenerator struct {
} }
func (g *GoApiGenerator) Generate(api *Api, destFile string) error { func (g *GoApiGenerator) Generate(api *Api, destFile string) error {
tplCtx := genData{ tplCtx := goGenData{
PkgName: g.pkgName, PkgName: g.pkgName,
Api: api, Api: api,
} }

View File

@ -1,9 +1,70 @@
package main package main
import (
"bytes"
"fmt"
"log"
"os"
"os/exec"
"text/template"
)
type tsGenData struct {
Api *Api
}
type TypescriptApiGenerator struct { type TypescriptApiGenerator struct {
} }
func (g *TypescriptApiGenerator) Generate(api *Api, destFile string) error { func (g *TypescriptApiGenerator) Generate(api *Api, destFile string) error {
//TODO implement me tplCtx := tsGenData{
panic("implement me") Api: api,
}
tpl := template.New("gogen")
tpl = tpl.Funcs(map[string]any{
"typedef": func(t ValType) (string, error) {
td, ok := map[ValType]string{
TInt: "number",
TString: "string",
TBool: "bool",
}[t]
if !ok {
return "", fmt.Errorf("cannot generate type %v", t)
}
return td, nil
},
})
tpl = template.Must(tpl.ParseFiles("./ts_gen.tmpl"))
var buf bytes.Buffer
if err := tpl.ExecuteTemplate(&buf, "ts_gen.tmpl", tplCtx); err != nil {
return fmt.Errorf("execute template: %w", err)
}
if err := g.writeDest(destFile, buf.Bytes()); err != nil {
return fmt.Errorf("write file: %w", err)
}
return nil
}
func (g *TypescriptApiGenerator) writeDest(destFile string, bytes []byte) error {
f, err := os.OpenFile(destFile, os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
return fmt.Errorf("open destination file: %w", err)
}
defer f.Close()
if _, err := f.Write(bytes); err != nil {
return fmt.Errorf("write formatted source: %w", err)
}
prettierCmd := exec.Command("npx", "prettier", destFile, "--write")
if err := prettierCmd.Run(); err != nil {
log.Printf("Prettier returned error: %v", err)
}
return nil
} }

View File

@ -136,6 +136,10 @@ func (k *KittenIPC) processMsg(msg Message) {
} }
func (k *KittenIPC) Call() {
}
func (k *KittenIPC) raiseErr(err error) { func (k *KittenIPC) raiseErr(err error) {
select { select {
case k.errCh <- err: case k.errCh <- err: