...
This commit is contained in:
86
cmd/orpctest/main.go
Normal file
86
cmd/orpctest/main.go
Normal file
@@ -0,0 +1,86 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"git.ourworld.tf/herocode/heroagent/pkg/openrpc"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Parse command line flags
|
||||
var (
|
||||
specDir = flag.String("dir", "pkg/openrpc/services", "Directory containing OpenRPC specifications")
|
||||
specName = flag.String("spec", "", "Name of the specification to display (optional)")
|
||||
methodName = flag.String("method", "", "Name of the method to display (optional)")
|
||||
)
|
||||
flag.Parse()
|
||||
|
||||
// Create a new OpenRPC Manager
|
||||
manager := openrpc.NewORPCManager()
|
||||
|
||||
// Ensure the specification directory exists
|
||||
if _, err := os.Stat(*specDir); os.IsNotExist(err) {
|
||||
log.Fatalf("Specification directory does not exist: %s", *specDir)
|
||||
}
|
||||
|
||||
// Load all specifications from the directory
|
||||
log.Printf("Loading specifications from %s...", *specDir)
|
||||
if err := manager.LoadSpecs(*specDir); err != nil {
|
||||
log.Fatalf("Failed to load specifications: %v", err)
|
||||
}
|
||||
|
||||
// List all loaded specifications
|
||||
specs := manager.ListSpecs()
|
||||
if len(specs) == 0 {
|
||||
log.Fatalf("No specifications found in %s", *specDir)
|
||||
}
|
||||
|
||||
fmt.Println("Loaded specifications:")
|
||||
for _, spec := range specs {
|
||||
fmt.Printf("- %s\n", spec)
|
||||
}
|
||||
|
||||
// If a specification name is provided, display its methods
|
||||
if *specName != "" {
|
||||
spec := manager.GetSpec(*specName)
|
||||
if spec == nil {
|
||||
log.Fatalf("Specification not found: %s", *specName)
|
||||
}
|
||||
|
||||
fmt.Printf("\nMethods in %s specification:\n", *specName)
|
||||
methods := manager.ListMethods(*specName)
|
||||
for _, method := range methods {
|
||||
fmt.Printf("- %s\n", method)
|
||||
}
|
||||
|
||||
// If a method name is provided, display its details
|
||||
if *methodName != "" {
|
||||
method := manager.GetMethod(*specName, *methodName)
|
||||
if method == nil {
|
||||
log.Fatalf("Method not found: %s", *methodName)
|
||||
}
|
||||
|
||||
fmt.Printf("\nDetails for method '%s':\n", *methodName)
|
||||
fmt.Printf("Description: %s\n", method.Description)
|
||||
fmt.Printf("Parameters: %d\n", len(method.Params))
|
||||
|
||||
if len(method.Params) > 0 {
|
||||
fmt.Println("Parameter list:")
|
||||
for _, param := range method.Params {
|
||||
required := ""
|
||||
if param.Required {
|
||||
required = " (required)"
|
||||
}
|
||||
fmt.Printf(" - %s%s: %s\n", param.Name, required, param.Description)
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Printf("Result: %s\n", method.Result.Name)
|
||||
fmt.Printf("Examples: %d\n", len(method.Examples))
|
||||
fmt.Printf("Errors: %d\n", len(method.Errors))
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user