github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/lib/function/helpers.go (about) 1 package functionLib 2 3 import ( 4 "github.com/taubyte/go-project-schema/functions" 5 "github.com/taubyte/go-project-schema/project" 6 structureSpec "github.com/taubyte/go-specs/structure" 7 "github.com/taubyte/tau-cli/common" 8 applicationLib "github.com/taubyte/tau-cli/lib/application" 9 "github.com/taubyte/utils/id" 10 ) 11 12 type getter struct { 13 project project.Project 14 application string 15 function functions.Function 16 } 17 18 func get(name string) (info getter, err error) { 19 info.project, info.application, err = applicationLib.SelectedProjectAndApp() 20 if err != nil { 21 return 22 } 23 24 info.function, err = info.project.Function(name, info.application) 25 if err != nil { 26 return 27 } 28 29 return 30 } 31 32 func list() (project project.Project, application string, functions []string, err error) { 33 project, application, err = applicationLib.SelectedProjectAndApp() 34 if err != nil { 35 return 36 } 37 38 local, global := project.Get().Functions(application) 39 if len(application) > 0 { 40 functions = local 41 } else { 42 functions = global 43 } 44 45 return 46 } 47 48 func set(function *structureSpec.Function, new bool) (info getter, err error) { 49 info, err = get(function.Name) 50 if err != nil { 51 return 52 } 53 54 if new { 55 function.Id = id.Generate(info.project.Get().Id(), function.Name) 56 } else if function.Type != info.function.Get().Type() { 57 err = info.function.Delete("trigger", "domains") 58 if err != nil { 59 return 60 } 61 62 switch function.Type { 63 case common.FunctionTypeHttp, common.FunctionTypeHttps: 64 function.Protocol = "" 65 function.Command = "" 66 function.Channel = "" 67 function.Local = false 68 case common.FunctionTypeP2P, common.FunctionTypePubSub: 69 function.Method = "" 70 function.Domains = nil 71 function.Paths = nil 72 switch function.Type { 73 case common.FunctionTypeP2P: 74 function.Channel = "" 75 case common.FunctionTypePubSub: 76 function.Command = "" 77 function.Protocol = "" 78 } 79 } 80 } 81 82 err = info.function.SetWithStruct(true, function) 83 if err != nil { 84 return 85 } 86 87 return 88 }