This commit is contained in:
2025-03-24 06:44:39 +01:00
parent 0df10f5cb3
commit 598b312140
371 changed files with 8238 additions and 9082 deletions

View File

@@ -1,7 +1,7 @@
module codegen
import freeflowuniverse.herolib.core.code { VFile, File, Function, Struct , Module}
import freeflowuniverse.herolib.schemas.openrpc {OpenRPC}
import freeflowuniverse.herolib.core.code { Function, Module, Struct }
import freeflowuniverse.herolib.schemas.openrpc { OpenRPC }
// pub struct OpenRPCCode {
// pub mut:
@@ -14,7 +14,6 @@ import freeflowuniverse.herolib.schemas.openrpc {OpenRPC}
// server_test VFile
// }
pub fn generate_module(o OpenRPC, receiver Struct, methods_map map[string]Function, objects_map map[string]Struct) !Module {
// openrpc_json := o.encode()!
// openrpc_file := File{
@@ -33,13 +32,13 @@ pub fn generate_module(o OpenRPC, receiver Struct, methods_map map[string]Functi
interface_test_file := generate_interface_test_file(o)!
return Module{
files: [
client_file
client_test_file
handler_file
handler_test_file
interface_file
interface_test_file
]
files: [
client_file,
client_test_file,
handler_file,
handler_test_file,
interface_file,
interface_test_file,
]
}
}

View File

@@ -1,8 +1,8 @@
module codegen
import freeflowuniverse.herolib.core.code { VFile, CodeItem, CustomCode, Function, Struct, parse_function }
import freeflowuniverse.herolib.core.code { CodeItem, CustomCode, Function, Struct, VFile, parse_function }
// import freeflowuniverse.herolib.schemas.jsonrpc.codegen {generate_client_struct}
import freeflowuniverse.herolib.schemas.openrpc {OpenRPC}
import freeflowuniverse.herolib.schemas.openrpc { OpenRPC }
import freeflowuniverse.herolib.core.texttools
// generate_structs geenrates struct codes for schemas defined in an openrpc document
@@ -21,7 +21,7 @@ pub fn generate_client_file(o OpenRPC, object_map map[string]Struct) !VFile {
// code << methods.map(CodeItem(it))
mut file := VFile{
name: 'client'
mod: name
mod: name
// imports: imports
items: items
}
@@ -54,18 +54,18 @@ pub fn generate_client_test_file(o OpenRPC, methods_map map[string]Function, obj
items << func
}
mut file := VFile{
name: 'client_test'
mod: name
name: 'client_test'
mod: name
imports: [
code.parse_import('freeflowuniverse.herolib.schemas.jsonrpc'),
code.parse_import('freeflowuniverse.herolib.schemas.rpcwebsocket'),
code.parse_import('log'),
]
items: items
items: items
}
for key, object in object_map {
file.add_import(mod: object.mod, types: [object.name])!
}
return file
}
}

View File

@@ -1,7 +1,7 @@
module codegen
import freeflowuniverse.herolib.core.code { VFile, CodeItem, Param, CustomCode, Function, Result, Struct, parse_import }
import freeflowuniverse.herolib.schemas.openrpc {OpenRPC}
import freeflowuniverse.herolib.core.code { CodeItem, CustomCode, Function, Param, Struct, VFile, parse_import }
import freeflowuniverse.herolib.schemas.openrpc { OpenRPC }
import freeflowuniverse.herolib.core.texttools
import rand
@@ -16,8 +16,8 @@ pub fn generate_handler_file(o OpenRPC, receiver Struct, method_map map[string]F
]
mut file := VFile{
name: 'handler'
mod: name
name: 'handler'
mod: name
imports: imports
// TODO
// items: jsonrpc.generate_handler(
@@ -59,11 +59,11 @@ pub fn generate_handler_test_file(o OpenRPC, receiver Struct, method_map map[str
continue
}
method_handle_test := Function{
name: 'test_handle_${method.name}'
name: 'test_handle_${method.name}'
result: Param{
is_result: true
}
body: "mut handler := ${receiver.name}Handler {${handler_name}.get(name: actor_name)!}
body: "mut handler := ${receiver.name}Handler {${handler_name}.get(name: actor_name)!}
request := new_jsonrpcrequest[${method.params[0].typ.symbol()}]('${method.name}', ${get_mock_value(method.params[0].typ.symbol())!})
response_json := handler.handle(request.to_json())!"
}
@@ -83,10 +83,10 @@ pub fn generate_handler_test_file(o OpenRPC, receiver Struct, method_map map[str
imports := parse_import('freeflowuniverse.herolib.schemas.jsonrpc {new_jsonrpcrequest, jsonrpcresponse_decode, jsonrpcerror_decode}')
mut file := VFile{
name: 'handler_test'
mod: name
name: 'handler_test'
mod: name
imports: [imports]
items: items
items: items
}
for key, object in object_map {

View File

@@ -1,8 +1,8 @@
module codegen
import freeflowuniverse.herolib.core.code { VFile, CustomCode, parse_function, parse_import }
import freeflowuniverse.herolib.core.code { CustomCode, VFile, parse_function, parse_import }
import freeflowuniverse.herolib.core.texttools
import freeflowuniverse.herolib.schemas.openrpc {OpenRPC}
import freeflowuniverse.herolib.schemas.openrpc { OpenRPC }
// pub fn (mut handler AccountantHandler) handle_ws(client &websocket.Client, message string) string {
// return handler.handle(message) or { panic(err) }
@@ -31,15 +31,16 @@ pub fn generate_interface_file(specification OpenRPC) !VFile {
items := handle_ws_fn
return VFile{
mod: name
name: 'server'
mod: name
name: 'server'
imports: [
parse_import('log'),
parse_import('net.websocket'),
parse_import('freeflowuniverse.herolib.schemas.rpcwebsocket {RpcWsServer}'),
]
items: [
handle_ws_fn, run_wsserver_fn
items: [
handle_ws_fn,
run_wsserver_fn,
]
}
}
@@ -60,8 +61,8 @@ pub fn generate_interface_test_file(specification OpenRPC) !VFile {
test_fn.body = 'spawn run_wsserver(port)'
return VFile{
mod: name
name: 'server_test'
mod: name
name: 'server_test'
items: [
CustomCode{'const port = 3000'},
test_fn,

View File

@@ -3,7 +3,7 @@ module codegen
import freeflowuniverse.herolib.core.code { CodeItem }
import freeflowuniverse.herolib.schemas.jsonschema { Schema }
import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen { schema_to_code }
import freeflowuniverse.herolib.schemas.openrpc {OpenRPC}
import freeflowuniverse.herolib.schemas.openrpc { OpenRPC }
import freeflowuniverse.herolib.core.texttools
// generate_structs geenrates struct codes for schemas defined in an openrpc document

View File

@@ -1,9 +1,9 @@
module codegen
import freeflowuniverse.herolib.core.code { VFile, CodeItem, CustomCode, Function, Struct, parse_function }
import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen {schemaref_to_type, schema_to_struct}
import freeflowuniverse.herolib.schemas.jsonschema {Schema}
import freeflowuniverse.herolib.schemas.openrpc {Method, ContentDescriptor}
import freeflowuniverse.herolib.core.code { Function, Struct }
import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen { schema_to_struct, schemaref_to_type }
import freeflowuniverse.herolib.schemas.jsonschema { Schema }
import freeflowuniverse.herolib.schemas.openrpc { ContentDescriptor, Method }
import freeflowuniverse.herolib.core.texttools
// converts OpenRPC Method to Code Function
@@ -21,7 +21,7 @@ pub fn method_to_function(method Method) !Function {
}
return Function{
name: texttools.snake_case(method.name)
name: texttools.snake_case(method.name)
params: params
result: result
}
@@ -42,7 +42,7 @@ pub fn content_descriptor_to_struct(cd ContentDescriptor) Struct {
pub fn content_descriptor_to_parameter(cd ContentDescriptor) !code.Param {
return code.Param{
name: cd.name
typ: schemaref_to_type(cd.schema)
typ: schemaref_to_type(cd.schema)
}
}