mirror of
https://github.com/wavetermdev/waveterm
synced 2026-05-23 16:58:30 +00:00
lots of changes. new wshrpc implementation. unify websocket, web, blockcontroller, domain sockets, and terminal inputs to all use the new rpc system. lots of moving files around to deal with circular dependencies use new wshrpc as a client in wsh cmd
67 lines
2.3 KiB
Go
67 lines
2.3 KiB
Go
// Copyright 2024, Command Line Inc.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/wavetermdev/thenextwave/pkg/util/utilfn"
|
|
"github.com/wavetermdev/thenextwave/pkg/wshrpc/wshserver"
|
|
"github.com/wavetermdev/thenextwave/pkg/wshutil"
|
|
)
|
|
|
|
func genMethod(fd *os.File, methodDecl *wshserver.WshServerMethodDecl) {
|
|
fmt.Fprintf(fd, "// command %q, wshserver.%s\n", methodDecl.Command, methodDecl.MethodName)
|
|
var dataType string
|
|
dataVarName := "nil"
|
|
if methodDecl.CommandDataType != nil {
|
|
dataType = ", data " + methodDecl.CommandDataType.String()
|
|
dataVarName = "data"
|
|
}
|
|
returnType := "error"
|
|
respName := "_"
|
|
tParamVal := "any"
|
|
if methodDecl.DefaultResponseDataType != nil {
|
|
returnType = "(" + methodDecl.DefaultResponseDataType.String() + ", error)"
|
|
respName = "resp"
|
|
tParamVal = methodDecl.DefaultResponseDataType.String()
|
|
}
|
|
fmt.Fprintf(fd, "func %s(w *wshutil.WshRpc%s, opts *wshrpc.WshRpcCommandOpts) %s {\n", methodDecl.MethodName, dataType, returnType)
|
|
if methodDecl.CommandType == wshutil.RpcType_Call {
|
|
fmt.Fprintf(fd, " %s, err := sendRpcRequestHelper[%s](w, %q, %s, opts)\n", respName, tParamVal, methodDecl.Command, dataVarName)
|
|
if methodDecl.DefaultResponseDataType != nil {
|
|
fmt.Fprintf(fd, " return resp, err\n")
|
|
} else {
|
|
fmt.Fprintf(fd, " return err\n")
|
|
}
|
|
} else {
|
|
panic("unsupported command type " + methodDecl.CommandType)
|
|
}
|
|
fmt.Fprintf(fd, "}\n\n")
|
|
}
|
|
|
|
func main() {
|
|
fd, err := os.Create("pkg/wshrpc/wshclient/wshclient.go")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer fd.Close()
|
|
fmt.Fprintf(os.Stderr, "generating wshclient file to %s\n", fd.Name())
|
|
fmt.Fprintf(fd, "// Copyright 2024, Command Line Inc.\n")
|
|
fmt.Fprintf(fd, "// SPDX-License-Identifier: Apache-2.0\n\n")
|
|
fmt.Fprintf(fd, "// generated by cmd/generatewshclient/main-generatewshclient.go\n\n")
|
|
fmt.Fprintf(fd, "package wshclient\n\n")
|
|
fmt.Fprintf(fd, "import (\n")
|
|
fmt.Fprintf(fd, " \"github.com/wavetermdev/thenextwave/pkg/wshutil\"\n")
|
|
fmt.Fprintf(fd, " \"github.com/wavetermdev/thenextwave/pkg/wshrpc\"\n")
|
|
fmt.Fprintf(fd, " \"github.com/wavetermdev/thenextwave/pkg/waveobj\"\n")
|
|
fmt.Fprintf(fd, ")\n\n")
|
|
|
|
for _, key := range utilfn.GetOrderedMapKeys(wshserver.WshServerCommandToDeclMap) {
|
|
methodDecl := wshserver.WshServerCommandToDeclMap[key]
|
|
genMethod(fd, methodDecl)
|
|
}
|
|
fmt.Fprintf(fd, "\n")
|
|
}
|