@@ -97,26 +97,26 @@ func runInit(args []string) error {
97
97
}
98
98
defer sm .Release ()
99
99
100
- packages , processed , notondisk , ondisk , err := getProjectDependencies (pkgT , cpr , sm )
100
+ pd , err := getProjectData (pkgT , cpr , sm )
101
101
if err != nil {
102
102
return err
103
103
}
104
104
m := manifest {
105
- Dependencies : packages ,
105
+ Dependencies : pd . constraints ,
106
106
}
107
107
108
108
// Make an initial lock from what knowledge we've collected about the
109
109
// versions on disk
110
110
l := lock {
111
- P : make ([]gps.LockedProject , 0 , len (ondisk )),
111
+ P : make ([]gps.LockedProject , 0 , len (pd . ondisk )),
112
112
}
113
113
114
- for pr , v := range ondisk {
114
+ for pr , v := range pd . ondisk {
115
115
// That we have to chop off these path prefixes is a symptom of
116
116
// a problem in gps itself
117
- pkgs := make ([]string , 0 , len (processed [pr ]))
117
+ pkgs := make ([]string , 0 , len (pd . dependencies [pr ]))
118
118
prslash := string (pr ) + "/"
119
- for _ , pkg := range processed [pr ] {
119
+ for _ , pkg := range pd . dependencies [pr ] {
120
120
if pkg == string (pr ) {
121
121
pkgs = append (pkgs , "." )
122
122
} else {
@@ -130,7 +130,7 @@ func runInit(args []string) error {
130
130
}
131
131
132
132
var l2 * lock
133
- if len (notondisk ) > 0 {
133
+ if len (pd . notondisk ) > 0 {
134
134
vlogf ("Solving..." )
135
135
params := gps.SolveParameters {
136
136
RootDir : root ,
@@ -252,14 +252,21 @@ func hasImportPathPrefix(s, prefix string) bool {
252
252
return strings .HasPrefix (s , prefix + "/" )
253
253
}
254
254
255
- func getProjectDependencies (pkgT gps.PackageTree , cpr string , sm * gps.SourceMgr ) (dependencies gps.ProjectConstraints , processed map [gps.ProjectRoot ][]string , notondisk map [gps.ProjectRoot ]bool , ondisk map [gps.ProjectRoot ]gps.Version , err error ) {
255
+ type projectData struct {
256
+ constraints gps.ProjectConstraints // constraints that could be found
257
+ dependencies map [gps.ProjectRoot ][]string // all dependencies (imports) found by project root
258
+ notondisk map [gps.ProjectRoot ]bool // projects that were not found on disk
259
+ ondisk map [gps.ProjectRoot ]gps.Version // projects that were found on disk
260
+ }
261
+
262
+ func getProjectData (pkgT gps.PackageTree , cpr string , sm * gps.SourceMgr ) (projectData , error ) {
256
263
vlogf ("Building dependency graph..." )
257
264
258
- dependencies = make (gps.ProjectConstraints )
259
- processed = make (map [gps.ProjectRoot ][]string )
265
+ constraints : = make (gps.ProjectConstraints )
266
+ dependencies : = make (map [gps.ProjectRoot ][]string )
260
267
packages := make (map [string ]bool )
261
- notondisk = make (map [gps.ProjectRoot ]bool )
262
- ondisk = make (map [gps.ProjectRoot ]gps.Version )
268
+ notondisk : = make (map [gps.ProjectRoot ]bool )
269
+ ondisk : = make (map [gps.ProjectRoot ]gps.Version )
263
270
for _ , v := range pkgT .Packages {
264
271
// TODO: Some errors maybe should not be skipped ;-)
265
272
if v .Err != nil {
@@ -278,20 +285,20 @@ func getProjectDependencies(pkgT gps.PackageTree, cpr string, sm *gps.SourceMgr)
278
285
}
279
286
pr , err := sm .DeduceProjectRoot (ip )
280
287
if err != nil {
281
- return dependencies , processed , notondisk , ondisk , errors .Wrap (err , "sm.DeduceProjectRoot" ) // TODO: Skip and report ?
288
+ return projectData {} , errors .Wrap (err , "sm.DeduceProjectRoot" ) // TODO: Skip and report ?
282
289
}
283
290
284
291
packages [ip ] = true
285
- if _ , ok := processed [pr ]; ok {
286
- if ! contains (processed [pr ], ip ) {
287
- processed [pr ] = append (processed [pr ], ip )
292
+ if _ , ok := dependencies [pr ]; ok {
293
+ if ! contains (dependencies [pr ], ip ) {
294
+ dependencies [pr ] = append (dependencies [pr ], ip )
288
295
}
289
296
290
297
continue
291
298
}
292
299
vlogf ("Package %q has import %q, analyzing..." , v .P .ImportPath , ip )
293
300
294
- processed [pr ] = []string {ip }
301
+ dependencies [pr ] = []string {ip }
295
302
v , err := depContext .versionInWorkspace (pr )
296
303
if err != nil {
297
304
notondisk [pr ] = true
@@ -309,7 +316,7 @@ func getProjectDependencies(pkgT gps.PackageTree, cpr string, sm *gps.SourceMgr)
309
316
pp .Constraint = c
310
317
}
311
318
312
- dependencies [pr ] = pp
319
+ constraints [pr ] = pp
313
320
}
314
321
}
315
322
@@ -380,12 +387,12 @@ func getProjectDependencies(pkgT gps.PackageTree, cpr string, sm *gps.SourceMgr)
380
387
return nil
381
388
}
382
389
383
- if _ , ok := processed [pr ]; ok {
384
- if ! contains (processed [pr ], pkg ) {
385
- processed [pr ] = append (processed [pr ], pkg )
390
+ if _ , ok := dependencies [pr ]; ok {
391
+ if ! contains (dependencies [pr ], pkg ) {
392
+ dependencies [pr ] = append (dependencies [pr ], pkg )
386
393
}
387
394
} else {
388
- processed [pr ] = []string {pkg }
395
+ dependencies [pr ] = []string {pkg }
389
396
}
390
397
391
398
// project must be on disk at this point; question is
@@ -425,9 +432,15 @@ func getProjectDependencies(pkgT gps.PackageTree, cpr string, sm *gps.SourceMgr)
425
432
for pkg := range packages {
426
433
err := dft (pkg )
427
434
if err != nil {
428
- return dependencies , processed , notondisk , ondisk , err // already errors.Wrap()'d internally
435
+ return projectData {} , err // already errors.Wrap()'d internally
429
436
}
430
437
}
431
438
432
- return dependencies , processed , notondisk , ondisk , nil
439
+ pd := projectData {
440
+ constraints : constraints ,
441
+ dependencies : dependencies ,
442
+ notondisk : notondisk ,
443
+ ondisk : ondisk ,
444
+ }
445
+ return pd , nil
433
446
}
0 commit comments