github.com/cidverse/cid-sdk-go@v0.0.0-20240318001225-c193d83f053e/helper.go (about) 1 package cidsdk 2 3 import ( 4 "encoding/json" 5 ) 6 7 type ModuleActionData struct { 8 ProjectDir string 9 Module ProjectModule 10 Config CurrentConfig 11 Env map[string]string 12 } 13 14 type ProjectActionData struct { 15 ProjectDir string 16 Config CurrentConfig 17 Modules []ProjectModule 18 Env map[string]string 19 } 20 21 // ModuleAction is a utility function to prepare to run a module-scoped action 22 func (sdk SDK) ModuleAction(cfg any) (ModuleActionData, error) { 23 config, err := sdk.CurrentConfig() 24 if err != nil { 25 return ModuleActionData{}, err 26 } 27 28 module, err := sdk.CurrentModule() 29 if err != nil { 30 return ModuleActionData{}, err 31 } 32 33 env, err := sdk.Env() 34 if err != nil { 35 return ModuleActionData{}, err 36 } 37 38 if config.Config != "" && cfg != nil { 39 err := json.Unmarshal([]byte(config.Config), cfg) 40 if err != nil { 41 return ModuleActionData{}, err 42 } 43 44 // overwrite from env 45 OverwriteFromEnv(cfg) 46 } 47 48 return ModuleActionData{ProjectDir: config.ProjectDir, Config: *config, Module: *module, Env: env}, nil 49 } 50 51 // ProjectAction is a utility function to prepare to run a project-scoped action 52 func (sdk SDK) ProjectAction(cfg any) (ProjectActionData, error) { 53 config, err := sdk.CurrentConfig() 54 if err != nil { 55 return ProjectActionData{}, err 56 } 57 58 env, err := sdk.Env() 59 if err != nil { 60 return ProjectActionData{}, err 61 } 62 63 if config.Config != "" && cfg != nil { 64 err := json.Unmarshal([]byte(config.Config), cfg) 65 if err != nil { 66 return ProjectActionData{}, err 67 } 68 69 // overwrite from env 70 OverwriteFromEnv(cfg) 71 } 72 73 modules, err := sdk.Modules() 74 if err != nil { 75 return ProjectActionData{}, err 76 } 77 78 return ProjectActionData{ProjectDir: config.ProjectDir, Config: *config, Modules: *modules, Env: env}, nil 79 }