changed golang bind

This commit is contained in:
Celestino Amoroso 2024-09-14 07:02:19 +02:00
parent 279991962d
commit e30d90befb
2 changed files with 19 additions and 15 deletions

View File

@ -1 +1 @@
1.11.0 17
1.11.0 41

32
main.go
View File

@ -382,12 +382,16 @@ func isReaderTerminal(r io.Reader) bool {
}
func registerLocalFunctions(ctx expr.ExprContext) {
aboutFunc := func(ctx expr.ExprContext, name string, args []any) (result any, err error) {
const (
devParamProp = "prop"
)
aboutFunc := func(ctx expr.ExprContext, name string, args map[string]any) (result any, err error) {
result = about()
return
}
ctrlListFunc := func(ctx expr.ExprContext, name string, args []any) (result any, err error) {
ctrlListFunc := func(ctx expr.ExprContext, name string, args map[string]any) (result any, err error) {
vars := ctx.EnumVars(func(name string) bool {
return len(name) > 0 && name[0] == '_'
})
@ -395,25 +399,25 @@ func registerLocalFunctions(ctx expr.ExprContext) {
return
}
ctrlFunc := func(ctx expr.ExprContext, name string, args []any) (result any, err error) {
varName, _ := args[0].(string)
ctrlFunc := func(ctx expr.ExprContext, name string, args map[string]any) (result any, err error) {
varName, _ := args[devParamProp].(string)
if len(args) == 1 {
result = expr.GlobalCtrlGet(varName)
} else {
result = expr.GlobalCtrlSet(varName, args[1])
result = expr.GlobalCtrlSet(varName, args[expr.ParamValue])
}
return
}
envSetFunc := func(ctx expr.ExprContext, name string, args []any) (result any, err error) {
envSetFunc := func(ctx expr.ExprContext, name string, args map[string]any) (result any, err error) {
var varName, value string
var ok bool
if varName, ok = args[0].(string); !ok {
err = expr.ErrExpectedGot(name, expr.TypeString, args[0])
if varName, ok = args[expr.ParamName].(string); !ok {
err = expr.ErrExpectedGot(name, expr.TypeString, args[expr.ParamName])
return
}
if value, ok = args[1].(string); !ok {
err = expr.ErrExpectedGot(name, expr.TypeString, args[1])
if value, ok = args[expr.ParamValue].(string); !ok {
err = expr.ErrExpectedGot(name, expr.TypeString, args[expr.ParamValue])
return
}
if err = os.Setenv(varName, value); err == nil {
@ -422,11 +426,11 @@ func registerLocalFunctions(ctx expr.ExprContext) {
return
}
envGetFunc := func(ctx expr.ExprContext, name string, args []any) (result any, err error) {
envGetFunc := func(ctx expr.ExprContext, name string, args map[string]any) (result any, err error) {
var varName string
var ok bool
if varName, ok = args[0].(string); !ok {
err = expr.ErrExpectedGot(name, expr.TypeString, args[0])
if varName, ok = args[expr.ParamName].(string); !ok {
err = expr.ErrExpectedGot(name, expr.TypeString, args[expr.ParamName])
return
}
@ -439,7 +443,7 @@ func registerLocalFunctions(ctx expr.ExprContext) {
ctx.RegisterFunc("about", expr.NewGolangFunctor(aboutFunc), expr.TypeString, []expr.ExprFuncParam{})
ctx.RegisterFunc("ctrlList", expr.NewGolangFunctor(ctrlListFunc), expr.TypeListOfStrings, []expr.ExprFuncParam{})
ctx.RegisterFunc("ctrl", expr.NewGolangFunctor(ctrlFunc), expr.TypeAny, []expr.ExprFuncParam{
expr.NewFuncParam("prop"),
expr.NewFuncParam(devParamProp),
expr.NewFuncParamFlag(expr.ParamValue, expr.PfOptional),
})
ctx.RegisterFunc("envSet", expr.NewGolangFunctor(envSetFunc), expr.TypeString, []expr.ExprFuncParam{