lang: core, funcs, types: Add ctx to simple func
Plumb through the standard context.Context so that a function can be cancelled if someone requests this. It makes it less awkward to write simple functions that might depend on io or network access.
This commit is contained in:
@@ -30,6 +30,7 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testpkg"
|
||||
|
||||
"github.com/purpleidea/mgmt/lang/funcs/funcgen/util"
|
||||
@@ -65,25 +66,25 @@ func init() {
|
||||
|
||||
}
|
||||
|
||||
func TestpkgAllKind(input []types.Value) (types.Value, error) {
|
||||
func TestpkgAllKind(ctx context.Context, input []types.Value) (types.Value, error) {
|
||||
return &types.FloatValue{
|
||||
V: testpkg.AllKind(input[0].Int(), input[1].Str()),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func TestpkgToUpper(input []types.Value) (types.Value, error) {
|
||||
func TestpkgToUpper(ctx context.Context, input []types.Value) (types.Value, error) {
|
||||
return &types.StrValue{
|
||||
V: testpkg.ToUpper(input[0].Str()),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func TestpkgMax(input []types.Value) (types.Value, error) {
|
||||
func TestpkgMax(ctx context.Context, input []types.Value) (types.Value, error) {
|
||||
return &types.FloatValue{
|
||||
V: testpkg.Max(input[0].Float(), input[1].Float()),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func TestpkgWithError(input []types.Value) (types.Value, error) {
|
||||
func TestpkgWithError(ctx context.Context, input []types.Value) (types.Value, error) {
|
||||
v, err := testpkg.WithError(input[0].Str())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -93,13 +94,13 @@ func TestpkgWithError(input []types.Value) (types.Value, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func TestpkgWithInt(input []types.Value) (types.Value, error) {
|
||||
func TestpkgWithInt(ctx context.Context, input []types.Value) (types.Value, error) {
|
||||
return &types.StrValue{
|
||||
V: testpkg.WithInt(input[0].Float(), int(input[1].Int()), input[2].Int(), int(input[3].Int()), int(input[4].Int()), input[5].Bool(), input[6].Str()),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func TestpkgSuperByte(input []types.Value) (types.Value, error) {
|
||||
func TestpkgSuperByte(ctx context.Context, input []types.Value) (types.Value, error) {
|
||||
return &types.StrValue{
|
||||
V: string(testpkg.SuperByte([]byte(input[0].Str()), input[1].Str())),
|
||||
}, nil
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"context"
|
||||
{{ range $i, $func := .Packages }} {{ if not (eq .Alias "") }}{{.Alias}} {{end}}"{{.Name}}"
|
||||
{{ end }}
|
||||
"github.com/purpleidea/mgmt/lang/funcs/funcgen/util"
|
||||
@@ -45,7 +46,7 @@ func init() {
|
||||
{{ end }}
|
||||
}
|
||||
{{ range $i, $func := .Functions }}
|
||||
{{$func.Help}}func {{$func.InternalName}}(input []types.Value) (types.Value, error) {
|
||||
{{$func.Help}}func {{$func.InternalName}}(ctx context.Context, input []types.Value) (types.Value, error) {
|
||||
{{- if $func.Errorful }}
|
||||
v, err := {{ if not (eq $func.GolangPackage.Alias "") }}{{$func.GolangPackage.Alias}}{{else}}{{$func.GolangPackage.Name}}{{end}}.{{$func.GolangFunc}}({{$func.MakeGolangArgs}})
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user