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  }