MCPcopy Index your code
hub / github.com/commitdev/zero / Init

Function Init

internal/init/init.go:20–81  ·  view source on GitHub ↗

Create cloud provider context

(outDir, localModulePath, registryFilePath string)

Source from the content-addressed store, hash-verified

18
19// Create cloud provider context
20func 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 )

Callers

nothing calls this directly

Calls 13

InfofFunction · 0.92
FatalFunction · 0.92
GetRegistryFunction · 0.92
SummarizeParametersFunction · 0.92
SummarizeConditionsFunction · 0.92
NewModuleFunction · 0.92
defaultProjConfigFunction · 0.85
getProjectNamePromptFunction · 0.85
chooseStackFunction · 0.85
loadAllModulesFunction · 0.85
getProjectPromptsFunction · 0.85
promptAllModulesFunction · 0.85

Tested by

no test coverage detected