github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/prompts/function/new.go (about)

     1  package functionPrompts
     2  
     3  import (
     4  	structureSpec "github.com/taubyte/go-specs/structure"
     5  	"github.com/taubyte/tau-cli/common"
     6  	functionLib "github.com/taubyte/tau-cli/lib/function"
     7  	"github.com/taubyte/tau-cli/prompts"
     8  	"github.com/urfave/cli/v2"
     9  )
    10  
    11  func New(ctx *cli.Context) (function *structureSpec.Function, templateURL string, err error) {
    12  	function = &structureSpec.Function{}
    13  
    14  	taken, err := functionLib.List()
    15  	if err != nil {
    16  		return
    17  	}
    18  
    19  	function.Name = prompts.GetOrRequireAUniqueName(ctx, NamePrompt, taken)
    20  
    21  	templateURL, err = checkTemplate(ctx, function)
    22  	if err != nil {
    23  		return
    24  	}
    25  
    26  	function.Description = prompts.GetOrAskForADescription(ctx, function.Description)
    27  	function.Tags = prompts.GetOrAskForTags(ctx, function.Tags)
    28  
    29  	function.Timeout, err = prompts.GetOrRequireATimeout(ctx, function.Timeout)
    30  	if err != nil {
    31  		return
    32  	}
    33  
    34  	function.Memory, err = prompts.GetOrRequireMemoryAndType(ctx, function.Memory == 0, function.Memory)
    35  	if err != nil {
    36  		return
    37  	}
    38  
    39  	function.Type, err = GetFunctionType(ctx, function.Type)
    40  	if err != nil {
    41  		return
    42  	}
    43  
    44  	switch function.Type {
    45  	case common.FunctionTypeHttp:
    46  		err = editHttp(ctx, function)
    47  	case common.FunctionTypeHttps:
    48  		function.Secure = true
    49  		err = editHttp(ctx, function)
    50  	case common.FunctionTypeP2P:
    51  		err = editP2P(ctx, function)
    52  	case common.FunctionTypePubSub:
    53  		err = editPubSub(ctx, function)
    54  	}
    55  	if err != nil {
    56  		return
    57  	}
    58  
    59  	source, err := prompts.GetOrSelectSource(ctx, function.Source)
    60  	if err != nil {
    61  		return
    62  	}
    63  	function.Source = source.String()
    64  
    65  	function.Call = prompts.GetOrRequireACall(ctx, source, function.Call)
    66  
    67  	return
    68  }