mirror of
https://github.com/wavetermdev/waveterm.git
synced 2024-12-22 16:48:23 +01:00
97 lines
3.2 KiB
Go
97 lines
3.2 KiB
Go
// Copyright 2024, Command Line Inc.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"reflect"
|
|
"strings"
|
|
|
|
"github.com/wavetermdev/waveterm/pkg/gogen"
|
|
"github.com/wavetermdev/waveterm/pkg/util/utilfn"
|
|
"github.com/wavetermdev/waveterm/pkg/waveobj"
|
|
"github.com/wavetermdev/waveterm/pkg/wconfig"
|
|
"github.com/wavetermdev/waveterm/pkg/wshrpc"
|
|
)
|
|
|
|
const WshClientFileName = "pkg/wshrpc/wshclient/wshclient.go"
|
|
const WaveObjMetaConstsFileName = "pkg/waveobj/metaconsts.go"
|
|
const SettingsMetaConstsFileName = "pkg/wconfig/metaconsts.go"
|
|
|
|
func GenerateWshClient() error {
|
|
fmt.Fprintf(os.Stderr, "generating wshclient file to %s\n", WshClientFileName)
|
|
var buf strings.Builder
|
|
gogen.GenerateBoilerplate(&buf, "wshclient", []string{
|
|
"github.com/wavetermdev/waveterm/pkg/wshutil",
|
|
"github.com/wavetermdev/waveterm/pkg/wshrpc",
|
|
"github.com/wavetermdev/waveterm/pkg/waveobj",
|
|
"github.com/wavetermdev/waveterm/pkg/wconfig",
|
|
"github.com/wavetermdev/waveterm/pkg/wps",
|
|
"github.com/wavetermdev/waveterm/pkg/vdom",
|
|
"github.com/wavetermdev/waveterm/pkg/telemetry",
|
|
})
|
|
wshDeclMap := wshrpc.GenerateWshCommandDeclMap()
|
|
for _, key := range utilfn.GetOrderedMapKeys(wshDeclMap) {
|
|
methodDecl := wshDeclMap[key]
|
|
if methodDecl.CommandType == wshrpc.RpcType_ResponseStream {
|
|
gogen.GenMethod_ResponseStream(&buf, methodDecl)
|
|
} else if methodDecl.CommandType == wshrpc.RpcType_Call {
|
|
gogen.GenMethod_Call(&buf, methodDecl)
|
|
} else {
|
|
panic("unsupported command type " + methodDecl.CommandType)
|
|
}
|
|
}
|
|
buf.WriteString("\n")
|
|
written, err := utilfn.WriteFileIfDifferent(WshClientFileName, []byte(buf.String()))
|
|
if !written {
|
|
fmt.Fprintf(os.Stderr, "no changes to %s\n", WshClientFileName)
|
|
}
|
|
return err
|
|
}
|
|
|
|
func GenerateWaveObjMetaConsts() error {
|
|
fmt.Fprintf(os.Stderr, "generating waveobj meta consts file to %s\n", WaveObjMetaConstsFileName)
|
|
var buf strings.Builder
|
|
gogen.GenerateBoilerplate(&buf, "waveobj", []string{})
|
|
gogen.GenerateMetaMapConsts(&buf, "MetaKey_", reflect.TypeOf(waveobj.MetaTSType{}))
|
|
buf.WriteString("\n")
|
|
written, err := utilfn.WriteFileIfDifferent(WaveObjMetaConstsFileName, []byte(buf.String()))
|
|
if !written {
|
|
fmt.Fprintf(os.Stderr, "no changes to %s\n", WaveObjMetaConstsFileName)
|
|
}
|
|
return err
|
|
}
|
|
|
|
func GenerateSettingsMetaConsts() error {
|
|
fmt.Fprintf(os.Stderr, "generating settings meta consts file to %s\n", SettingsMetaConstsFileName)
|
|
var buf strings.Builder
|
|
gogen.GenerateBoilerplate(&buf, "wconfig", []string{})
|
|
gogen.GenerateMetaMapConsts(&buf, "ConfigKey_", reflect.TypeOf(wconfig.SettingsType{}))
|
|
buf.WriteString("\n")
|
|
written, err := utilfn.WriteFileIfDifferent(SettingsMetaConstsFileName, []byte(buf.String()))
|
|
if !written {
|
|
fmt.Fprintf(os.Stderr, "no changes to %s\n", SettingsMetaConstsFileName)
|
|
}
|
|
return err
|
|
}
|
|
|
|
func main() {
|
|
err := GenerateWshClient()
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "error generating wshclient: %v\n", err)
|
|
return
|
|
}
|
|
err = GenerateWaveObjMetaConsts()
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "error generating waveobj meta consts: %v\n", err)
|
|
return
|
|
}
|
|
err = GenerateSettingsMetaConsts()
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "error generating settings meta consts: %v\n", err)
|
|
return
|
|
}
|
|
}
|