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 }