heroagent/pkg/heroscript/paramsparser/example/main.go
2025-04-23 04:18:28 +02:00

85 lines
2.1 KiB
Go

// Example usage of the paramsparser package
package main
import (
"fmt"
"github.com/freeflowuniverse/heroagent/pkg/heroscript/paramsparser"
)
func main() {
// Create a new parser
parser := paramsparser.New()
// Set some default values
parser.SetDefaults(map[string]string{
"host": "localhost",
"port": "8080",
"debug": "false",
"timeout": "30",
"greeting": "Hello, World!",
})
// Parse a string in the specified format
inputStr := `
name: 'myapp'
host: 'example.com'
port: 25
secure: 1
reset: 1
description: '
This is a multiline description
for my application.
It can span multiple lines.
'
`
err := parser.Parse(inputStr)
if err != nil {
fmt.Printf("Error parsing input: %v\n", err)
return
}
// Access parameters with type conversion
name := parser.Get("name")
host := parser.Get("host")
port := parser.GetIntDefault("port", 8080)
secure := parser.GetBool("secure")
reset := parser.GetBool("reset")
description := parser.Get("description")
fmt.Println("Configuration:")
fmt.Printf(" Name: %s\n", name)
fmt.Printf(" Host: %s\n", host)
fmt.Printf(" Port: %d\n", port)
fmt.Printf(" Secure: %t\n", secure)
fmt.Printf(" Reset: %t\n", reset)
fmt.Printf(" Description: %s\n", description)
// Get all parameters
fmt.Println("\nAll parameters:")
for key, value := range parser.GetAll() {
if key == "description" {
// Truncate long values for display
if len(value) > 30 {
value = value[:30] + "..."
}
}
fmt.Printf(" %s = %s\n", key, value)
}
// Example of using MustGet for required parameters
if parser.Has("name") {
fmt.Printf("\nRequired parameter: %s\n", parser.MustGet("name"))
}
// Example of a simpler one-line parse
simpleParser := paramsparser.New()
simpleParser.ParseString("name: 'simple' version: '1.0' active: 1")
fmt.Println("\nSimple parser results:")
fmt.Printf(" Name: %s\n", simpleParser.Get("name"))
fmt.Printf(" Version: %s\n", simpleParser.Get("version"))
fmt.Printf(" Active: %t\n", simpleParser.GetBool("active"))
}