github.com/GuanceCloud/cliutils@v1.1.21/pipeline/ptinput/funcs/fn_pt_name.go (about)

     1  package funcs
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/GuanceCloud/platypus/pkg/ast"
     7  	"github.com/GuanceCloud/platypus/pkg/engine/runtime"
     8  	"github.com/GuanceCloud/platypus/pkg/errchain"
     9  )
    10  
    11  func PtNameChecking(ctx *runtime.Task, funcExpr *ast.CallExpr) *errchain.PlError {
    12  	if len(funcExpr.Param) > 1 {
    13  		return runtime.NewRunError(ctx, fmt.Sprintf(
    14  			"func `%s' can have at most one parameter", funcExpr.Name), funcExpr.NamePos)
    15  	}
    16  
    17  	return nil
    18  }
    19  
    20  func PtName(ctx *runtime.Task, funcExpr *ast.CallExpr) *errchain.PlError {
    21  	if len(funcExpr.Param) == 1 {
    22  		if val, _, err := runtime.RunStmt(ctx, funcExpr.Param[0]); err == nil {
    23  			if val, ok := val.(string); ok {
    24  				_ = setPtName(ctx.InData(), val)
    25  			}
    26  		}
    27  	}
    28  
    29  	ctx.Regs.ReturnAppend(getPtName(ctx.InData()), ast.String)
    30  	return nil
    31  }