Skip to content

Commit 6267506

Browse files
committed
Go: Postpone go.mod creation until necessary
1 parent 1055e77 commit 6267506

File tree

2 files changed

+14
-16
lines changed

2 files changed

+14
-16
lines changed

go/extractor/cli/go-autobuilder/go-autobuilder.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,11 @@ func installDependencies(workspace project.GoWorkspace) {
473473
log.Println("Installing dependencies using `glide install`")
474474
util.RunCmd(install)
475475
} else {
476+
if workspace.Modules == nil {
477+
project.InitGoModForLegacyProject(workspace.BaseDir)
478+
workspace.Modules = project.LoadGoModules([]string{filepath.Join(workspace.BaseDir, "go.mod")})
479+
}
480+
476481
// get dependencies for all modules
477482
for _, module := range workspace.Modules {
478483
install = exec.Command("go", "get", "-v", "./...")

go/extractor/project/project.go

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ func findGoModFiles(root string) []string {
179179
// Given a list of `go.mod` file paths, try to parse them all. The resulting array of `GoModule` objects
180180
// will be the same length as the input array and the objects will contain at least the `go.mod` path.
181181
// If parsing the corresponding file is successful, then the parsed contents will also be available.
182-
func loadGoModules(goModFilePaths []string) []*GoModule {
182+
func LoadGoModules(goModFilePaths []string) []*GoModule {
183183
results := make([]*GoModule, len(goModFilePaths))
184184

185185
for i, goModFilePath := range goModFilePaths {
@@ -219,7 +219,7 @@ func discoverWorkspace(workFilePath string) GoWorkspace {
219219
log.Printf("Unable to read %s, falling back to finding `go.mod` files manually:\n%s\n", workFilePath, err.Error())
220220
return GoWorkspace{
221221
BaseDir: baseDir,
222-
Modules: loadGoModules(findGoModFiles(baseDir)),
222+
Modules: LoadGoModules(findGoModFiles(baseDir)),
223223
DepMode: GoGetWithModules,
224224
ModMode: getModMode(GoGetWithModules, baseDir),
225225
}
@@ -232,7 +232,7 @@ func discoverWorkspace(workFilePath string) GoWorkspace {
232232
log.Printf("Unable to parse %s, falling back to finding `go.mod` files manually:\n%s\n", workFilePath, err.Error())
233233
return GoWorkspace{
234234
BaseDir: baseDir,
235-
Modules: loadGoModules(findGoModFiles(baseDir)),
235+
Modules: LoadGoModules(findGoModFiles(baseDir)),
236236
DepMode: GoGetWithModules,
237237
ModMode: getModMode(GoGetWithModules, baseDir),
238238
}
@@ -255,7 +255,7 @@ func discoverWorkspace(workFilePath string) GoWorkspace {
255255
return GoWorkspace{
256256
BaseDir: baseDir,
257257
WorkspaceFile: workFile,
258-
Modules: loadGoModules(goModFilePaths),
258+
Modules: LoadGoModules(goModFilePaths),
259259
DepMode: GoGetWithModules,
260260
ModMode: ModReadonly, // Workspaces only support "readonly"
261261
}
@@ -278,7 +278,7 @@ func discoverWorkspaces(emitDiagnostics bool) []GoWorkspace {
278278
for i, goModFile := range goModFiles {
279279
results[i] = GoWorkspace{
280280
BaseDir: filepath.Dir(goModFile),
281-
Modules: loadGoModules([]string{goModFile}),
281+
Modules: LoadGoModules([]string{goModFile}),
282282
DepMode: GoGetWithModules,
283283
ModMode: getModMode(GoGetWithModules, filepath.Dir(goModFile)),
284284
}
@@ -327,7 +327,7 @@ func discoverWorkspaces(emitDiagnostics bool) []GoWorkspace {
327327
log.Printf("Module %s is not referenced by any go.work file; adding it separately.\n", goModFile)
328328
results = append(results, GoWorkspace{
329329
BaseDir: filepath.Dir(goModFile),
330-
Modules: loadGoModules([]string{goModFile}),
330+
Modules: LoadGoModules([]string{goModFile}),
331331
DepMode: GoGetWithModules,
332332
ModMode: getModMode(GoGetWithModules, filepath.Dir(goModFile)),
333333
})
@@ -394,16 +394,12 @@ func getBuildRoots(emitDiagnostics bool) (goWorkspaces []GoWorkspace, totalModul
394394
return
395395
}
396396

397-
// Try to initialize a `go.mod` file automatically.
398-
InitGoModForLegacyProject(".")
399-
400397
goWorkspaces = []GoWorkspace{{
401398
BaseDir: ".",
402-
DepMode: GoGetWithModules,
403-
Modules: loadGoModules([]string{"go.mod"}),
399+
DepMode: GoGetNoModules,
404400
ModMode: getModMode(GoGetWithModules, "."),
405401
}}
406-
totalModuleFiles = 1
402+
totalModuleFiles = 0
407403
return
408404
}
409405

@@ -437,14 +433,11 @@ func getBuildRoots(emitDiagnostics bool) (goWorkspaces []GoWorkspace, totalModul
437433

438434
// Try to initialize a `go.mod` file automatically for the stray source files.
439435
if !slices.Contains(goModDirs, path) {
440-
InitGoModForLegacyProject(path)
441436
goWorkspaces = append(goWorkspaces, GoWorkspace{
442437
BaseDir: path,
443-
Modules: loadGoModules([]string{filepath.Join(path, "go.mod")}),
444-
DepMode: GoGetWithModules,
438+
DepMode: GoGetNoModules,
445439
ModMode: ModUnset,
446440
})
447-
totalModuleFiles += 1
448441
goModDirs = append(goModDirs, path)
449442
break
450443
}

0 commit comments

Comments
 (0)