in internal/cmd/install.go [17:75]
func Install(path string) (err error) {
// Make sure host system contains all utils needed by Fabrikate
requiredSystemTools := []string{"git", "helm", "sh", "curl"}
for _, tool := range requiredSystemTools {
path, err := exec.LookPath(tool)
if err != nil {
return err
}
logger.Info(emoji.Sprintf(":mag: Using %s: %s", tool, path))
}
rootInit := func(startingPath string, environments []string, c core.Component) (component core.Component, err error) {
return c.InstallRoot(startingPath, environments)
}
results := core.WalkComponentTree(path, []string{}, func(path string, component *core.Component) (err error) {
logger.Info(emoji.Sprintf(":point_right: Starting install for component: %s", component.Name))
var generator core.Generator
switch component.ComponentType {
case "helm":
generator = &generators.HelmGenerator{}
case "static":
generator = &generators.StaticGenerator{}
}
// Load access tokens and add them to the global token list. Do not overwrite if already present
if accessTokens, err := component.GetAccessTokens(); err != nil {
return err
} else if len(accessTokens) > 0 {
for repo, token := range accessTokens {
if _, exists := git.AccessTokens.Get(repo); !exists {
git.AccessTokens.Set(repo, token)
}
}
}
if err := component.Install(path, generator); err != nil {
return err
}
logger.Info(emoji.Sprintf(":point_left: Finished install for component: %s", component.Name))
return err
}, rootInit)
components, err := core.SynchronizeWalkResult(results)
if err != nil {
return err
}
for _, component := range components {
logger.Info(emoji.Sprintf(":white_check_mark: Installed successfully: %s", component.Name))
}
logger.Info(emoji.Sprintf(":raised_hands: Finished install"))
return err
}