mirror of
https://github.com/wavetermdev/waveterm.git
synced 2024-12-22 16:48:23 +01:00
936d4bfb30
This migrates all remaining eventbus events sent over the websocket to use the wps interface. WPS is more flexible for registering events and callbacks and provides support for more reliable unsubscribes and resubscribes.
80 lines
2.5 KiB
Go
80 lines
2.5 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() {
|
|
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",
|
|
})
|
|
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")
|
|
err := os.WriteFile(WshClientFileName, []byte(buf.String()), 0644)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func GenerateWaveObjMetaConsts() {
|
|
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")
|
|
err := os.WriteFile(WaveObjMetaConstsFileName, []byte(buf.String()), 0644)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func GenerateSettingsMetaConsts() {
|
|
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")
|
|
err := os.WriteFile(SettingsMetaConstsFileName, []byte(buf.String()), 0644)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
GenerateWshClient()
|
|
GenerateWaveObjMetaConsts()
|
|
GenerateSettingsMetaConsts()
|
|
}
|