Create cloud provider context
(outDir, localModulePath, registryFilePath string)
| 18 | |
| 19 | // Create cloud provider context |
| 20 | func Init(outDir, localModulePath, registryFilePath string) *projectconfig.ZeroProjectConfig { |
| 21 | projectConfig := defaultProjConfig() |
| 22 | |
| 23 | projectRootParams := map[string]string{} |
| 24 | emptyEnvVarTranslationMap := map[string]string{} |
| 25 | promptName := getProjectNamePrompt() |
| 26 | promptName.RunPrompt(projectRootParams, emptyEnvVarTranslationMap) |
| 27 | projectConfig.Name = projectRootParams[promptName.Field] |
| 28 | |
| 29 | rootDir := path.Join(outDir, projectConfig.Name) |
| 30 | flog.Infof(":tada: Initializing project") |
| 31 | |
| 32 | err := os.MkdirAll(rootDir, os.ModePerm) |
| 33 | if os.IsExist(err) { |
| 34 | exit.Fatal("Directory %v already exists! Error: %v", projectConfig.Name, err) |
| 35 | } else if err != nil { |
| 36 | exit.Fatal("Error creating root: %v ", err) |
| 37 | } |
| 38 | |
| 39 | registry, err := registry.GetRegistry(localModulePath, registryFilePath) |
| 40 | |
| 41 | if err != nil { |
| 42 | exit.Fatal("Error getting registry: %v ", err) |
| 43 | } |
| 44 | |
| 45 | moduleSources := chooseStack(registry) |
| 46 | moduleConfigs, mappedSources := loadAllModules(moduleSources) |
| 47 | |
| 48 | prompts := getProjectPrompts(projectConfig.Name, moduleConfigs) |
| 49 | |
| 50 | initParams := make(map[string]string) |
| 51 | projectConfig.ShouldPushRepositories = true |
| 52 | prompts["ShouldPushRepositories"].RunPrompt(initParams, emptyEnvVarTranslationMap) |
| 53 | if initParams["ShouldPushRepositories"] == "n" { |
| 54 | projectConfig.ShouldPushRepositories = false |
| 55 | } |
| 56 | |
| 57 | // Prompting for push-up stream, then conditionally prompting for github |
| 58 | prompts["GithubRootOrg"].RunPrompt(initParams, emptyEnvVarTranslationMap) |
| 59 | |
| 60 | projectData := promptAllModules(moduleConfigs, &projectConfig) |
| 61 | |
| 62 | // Map parameter values back to specific modules |
| 63 | for moduleName, module := range moduleConfigs { |
| 64 | prompts[moduleName].RunPrompt(initParams, emptyEnvVarTranslationMap) |
| 65 | repoName := initParams[prompts[moduleName].Field] |
| 66 | repoURL := fmt.Sprintf("%s/%s", initParams["GithubRootOrg"], repoName) |
| 67 | projectModuleParams := moduleconfig.SummarizeParameters(module, projectData) |
| 68 | projectModuleConditions := moduleconfig.SummarizeConditions(module) |
| 69 | |
| 70 | projectConfig.Modules[moduleName] = projectconfig.NewModule( |
| 71 | projectModuleParams, |
| 72 | repoName, |
| 73 | repoURL, |
| 74 | mappedSources[moduleName], |
| 75 | module.DependsOn, |
| 76 | projectModuleConditions, |
| 77 | ) |
nothing calls this directly
no test coverage detected