2024-08-28 03:49:49 +02:00
|
|
|
// Copyright 2024, Command Line Inc.
|
|
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
"reflect"
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
"github.com/wavetermdev/thenextwave/pkg/gogen"
|
|
|
|
"github.com/wavetermdev/thenextwave/pkg/util/utilfn"
|
|
|
|
"github.com/wavetermdev/thenextwave/pkg/waveobj"
|
|
|
|
"github.com/wavetermdev/thenextwave/pkg/wconfig"
|
|
|
|
"github.com/wavetermdev/thenextwave/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/thenextwave/pkg/wshutil",
|
|
|
|
"github.com/wavetermdev/thenextwave/pkg/wshrpc",
|
|
|
|
"github.com/wavetermdev/thenextwave/pkg/waveobj",
|
2024-09-03 05:21:35 +02:00
|
|
|
"github.com/wavetermdev/thenextwave/pkg/wconfig",
|
2024-08-28 03:49:49 +02:00
|
|
|
})
|
|
|
|
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()
|
|
|
|
}
|