Skip to content
This repository was archived by the owner on Sep 9, 2020. It is now read-only.

Commit 41ed164

Browse files
committed
Standardize import output and use new feedback system
1 parent a0ab28d commit 41ed164

File tree

7 files changed

+61
-95
lines changed

7 files changed

+61
-95
lines changed

cmd/dep/glide_config.go

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,26 @@
55
package main
66

77
import (
8+
"bytes"
89
"io/ioutil"
910
"path"
1011
"path/filepath"
1112

1213
"github.com/go-yaml/yaml"
1314
"github.com/golang/dep"
15+
fb "github.com/golang/dep/internal/feedback"
1416
"github.com/golang/dep/internal/gps"
1517
"github.com/pkg/errors"
1618
)
1719

1820
type glideFiles struct {
19-
yaml glideYaml
20-
lock *glideLock
21-
loggers *dep.Loggers
21+
yaml glideYaml
22+
lock *glideLock
23+
ctx *dep.Ctx
2224
}
2325

24-
func newGlideFiles(loggers *dep.Loggers) *glideFiles {
25-
return &glideFiles{loggers: loggers}
26+
func newGlideFiles(ctx *dep.Ctx) *glideFiles {
27+
return &glideFiles{ctx: ctx}
2628
}
2729

2830
type glideYaml struct {
@@ -34,8 +36,8 @@ type glideYaml struct {
3436
}
3537

3638
type glideLock struct {
37-
Imports []glidePackage `yaml:"import"`
38-
TestImports []glidePackage `yaml:"testImport"`
39+
Imports []glidePackage `yaml:"imports"`
40+
TestImports []glidePackage `yaml:"testImports"`
3941
}
4042

4143
type glidePackage struct {
@@ -50,9 +52,10 @@ type glidePackage struct {
5052
}
5153

5254
func (g *glideFiles) load(projectDir string) error {
55+
g.ctx.Err.Println("Detected glide configuration files...")
5356
y := filepath.Join(projectDir, glideYamlName)
54-
if g.loggers.Verbose {
55-
g.loggers.Err.Printf("glide: Loading %s", y)
57+
if g.ctx.Loggers.Verbose {
58+
g.ctx.Loggers.Err.Printf(" Loading %s", y)
5659
}
5760
yb, err := ioutil.ReadFile(y)
5861
if err != nil {
@@ -65,23 +68,32 @@ func (g *glideFiles) load(projectDir string) error {
6568

6669
l := filepath.Join(projectDir, glideLockName)
6770
if exists, _ := dep.IsRegular(l); exists {
68-
if g.loggers.Verbose {
69-
g.loggers.Err.Printf("glide: Loading %s", l)
71+
if g.ctx.Loggers.Verbose {
72+
g.ctx.Loggers.Err.Printf(" Loading %s", l)
7073
}
7174
lb, err := ioutil.ReadFile(l)
7275
if err != nil {
7376
return errors.Wrapf(err, "Unable to read %s", l)
7477
}
75-
err = yaml.Unmarshal(lb, &g.lock)
78+
lock := &glideLock{}
79+
err = yaml.Unmarshal(lb, lock)
7680
if err != nil {
7781
return errors.Wrapf(err, "Unable to parse %s", l)
7882
}
83+
g.lock = lock
7984
}
8085

8186
return nil
8287
}
8388

8489
func (g *glideFiles) convert(projectName string, sm gps.SourceManager) (*dep.Manifest, *dep.Lock, error) {
90+
task := bytes.NewBufferString("Converting from glide.yaml")
91+
if g.lock != nil {
92+
task.WriteString(" and glide.lock")
93+
}
94+
task.WriteString("...")
95+
g.ctx.Loggers.Err.Println(task)
96+
8597
manifest := &dep.Manifest{
8698
Dependencies: make(gps.ProjectConstraints),
8799
}
@@ -105,7 +117,7 @@ func (g *glideFiles) convert(projectName string, sm gps.SourceManager) (*dep.Man
105117

106118
if len(g.yaml.ExcludeDirs) > 0 {
107119
if g.yaml.Name != "" && g.yaml.Name != projectName {
108-
g.loggers.Err.Printf("dep: Glide thinks the package is '%s' but dep thinks it is '%s', using dep's value.\n", g.yaml.Name, projectName)
120+
g.ctx.Loggers.Err.Printf(" Glide thinks the package is '%s' but dep thinks it is '%s', using dep's value.\n", g.yaml.Name, projectName)
109121
}
110122

111123
for _, dir := range g.yaml.ExcludeDirs {
@@ -133,24 +145,22 @@ func (g *glideFiles) convert(projectName string, sm gps.SourceManager) (*dep.Man
133145

134146
func (g *glideFiles) buildProjectConstraint(pkg glidePackage, sm gps.SourceManager) (pc gps.ProjectConstraint, err error) {
135147
if pkg.Name == "" {
136-
err = errors.New("glide: Invalid glide configuration, package name is required")
148+
err = errors.New("Invalid glide configuration, package name is required")
137149
return
138150
}
139151

140-
if g.loggers.Verbose {
152+
if g.ctx.Loggers.Verbose {
141153
if pkg.OS != "" {
142-
g.loggers.Err.Printf("glide: The %s package specified an os, but that isn't supported by dep yet, and will be ignored. See https://github.com/golang/dep/issues/291.\n", pkg.Name)
154+
g.ctx.Loggers.Err.Printf(" The %s package specified an os, but that isn't supported by dep yet, and will be ignored. See https://github.com/golang/dep/issues/291.\n", pkg.Name)
143155
}
144156
if pkg.Arch != "" {
145-
g.loggers.Err.Printf("glide: The %s package specified an arch, but that isn't supported by dep yet, and will be ignored. See https://github.com/golang/dep/issues/291.\n", pkg.Name)
146-
}
147-
if len(pkg.Subpackages) > 0 {
148-
g.loggers.Err.Printf("glide: The %s package specified subpackages, but that is calcuated by dep, and will be ignored.\n", pkg.Name)
157+
g.ctx.Loggers.Err.Printf(" The %s package specified an arch, but that isn't supported by dep yet, and will be ignored. See https://github.com/golang/dep/issues/291.\n", pkg.Name)
149158
}
150159
}
151160

152161
pc.Ident = gps.ProjectIdentifier{ProjectRoot: gps.ProjectRoot(pkg.Name), Source: pkg.Repository}
153162
pc.Constraint, err = deduceConstraint(pkg.Reference, pc.Ident, sm)
163+
154164
return
155165
}
156166

@@ -167,5 +177,6 @@ func (g *glideFiles) buildLockedProject(pkg glidePackage, manifest *dep.Manifest
167177
version = revision
168178
}
169179

180+
feedback(version, id.ProjectRoot, fb.DepTypeDirect, g.ctx)
170181
return gps.NewLockedProject(id, version, nil)
171182
}

cmd/dep/glide_config_test.go

Lines changed: 18 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,22 @@ import (
1515
"github.com/golang/dep/internal/gps"
1616
)
1717

18-
func TestGlideConvertProject(t *testing.T) {
19-
loggers := &dep.Loggers{
18+
func newTestLoggers() *dep.Loggers {
19+
return &dep.Loggers{
2020
Out: log.New(os.Stdout, "", 0),
2121
Err: log.New(os.Stderr, "", 0),
2222
Verbose: true,
2323
}
24+
}
25+
func newTestContext() *dep.Ctx {
26+
return &dep.Ctx{
27+
Loggers: newTestLoggers(),
28+
}
29+
}
2430

31+
func TestGlideConvertProject(t *testing.T) {
2532
f := glideFiles{
26-
loggers: loggers,
33+
ctx: newTestContext(),
2734
yaml: glideYaml{
2835
Imports: []glidePackage{
2936
{
@@ -93,14 +100,8 @@ func TestGlideConvertProject(t *testing.T) {
93100
}
94101

95102
func TestGlideConvertTestProject(t *testing.T) {
96-
loggers := &dep.Loggers{
97-
Out: log.New(os.Stdout, "", 0),
98-
Err: log.New(os.Stderr, "", 0),
99-
Verbose: true,
100-
}
101-
102103
f := glideFiles{
103-
loggers: loggers,
104+
ctx: newTestContext(),
104105
yaml: glideYaml{
105106
TestImports: []glidePackage{
106107
{
@@ -139,14 +140,8 @@ func TestGlideConvertTestProject(t *testing.T) {
139140
}
140141

141142
func TestGlideConvertIgnore(t *testing.T) {
142-
loggers := &dep.Loggers{
143-
Out: log.New(os.Stdout, "", 0),
144-
Err: log.New(os.Stderr, "", 0),
145-
Verbose: true,
146-
}
147-
148143
f := glideFiles{
149-
loggers: loggers,
144+
ctx: newTestContext(),
150145
yaml: glideYaml{
151146
Ignores: []string{"github.com/sdboyer/deptest"},
152147
},
@@ -167,14 +162,8 @@ func TestGlideConvertIgnore(t *testing.T) {
167162
}
168163

169164
func TestGlideConvertExcludeDir(t *testing.T) {
170-
loggers := &dep.Loggers{
171-
Out: log.New(os.Stdout, "", 0),
172-
Err: log.New(os.Stderr, "", 0),
173-
Verbose: true,
174-
}
175-
176165
f := glideFiles{
177-
loggers: loggers,
166+
ctx: newTestContext(),
178167
yaml: glideYaml{
179168
ExcludeDirs: []string{"samples"},
180169
},
@@ -195,14 +184,8 @@ func TestGlideConvertExcludeDir(t *testing.T) {
195184
}
196185

197186
func TestGlideConvertExcludeDir_IgnoresMismatchedPackageName(t *testing.T) {
198-
loggers := &dep.Loggers{
199-
Out: log.New(os.Stdout, "", 0),
200-
Err: log.New(os.Stderr, "", 0),
201-
Verbose: true,
202-
}
203-
204187
f := glideFiles{
205-
loggers: loggers,
188+
ctx: newTestContext(),
206189
yaml: glideYaml{
207190
Name: "github.com/golang/mismatched-package-name",
208191
ExcludeDirs: []string{"samples"},
@@ -235,19 +218,14 @@ func TestGlideConvertWarnsForUnusedFields(t *testing.T) {
235218
pkg.Reference = "v1.0.0"
236219

237220
// Capture stderr so we can verify warnings
238-
verboseOutput := &bytes.Buffer{}
239-
loggers := &dep.Loggers{
240-
Out: log.New(os.Stdout, "", 0),
241-
Err: log.New(verboseOutput, "", 0),
242-
Verbose: true,
243-
}
244-
245221
f := glideFiles{
246-
loggers: loggers,
222+
ctx: newTestContext(),
247223
yaml: glideYaml{
248224
Imports: []glidePackage{pkg},
249225
},
250226
}
227+
verboseOutput := &bytes.Buffer{}
228+
f.ctx.Loggers.Err = log.New(verboseOutput, "", 0)
251229

252230
_, _, err := f.convert("", nil)
253231
if err != nil {
@@ -262,14 +240,8 @@ func TestGlideConvertWarnsForUnusedFields(t *testing.T) {
262240
}
263241

264242
func TestGlideConvertBadInput_EmptyPackageName(t *testing.T) {
265-
loggers := &dep.Loggers{
266-
Out: log.New(os.Stdout, "", 0),
267-
Err: log.New(os.Stderr, "", 0),
268-
Verbose: true,
269-
}
270-
271243
f := glideFiles{
272-
loggers: loggers,
244+
ctx: newTestContext(),
273245
yaml: glideYaml{
274246
Imports: []glidePackage{{Name: ""}},
275247
},

cmd/dep/glide_importer.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ const glideYamlName = "glide.yaml"
1616
const glideLockName = "glide.lock"
1717

1818
type glideImporter struct {
19-
loggers *dep.Loggers
20-
sm gps.SourceManager
19+
ctx *dep.Ctx
20+
sm gps.SourceManager
2121
}
2222

23-
func newGlideImporter(loggers *dep.Loggers, sm gps.SourceManager) glideImporter {
24-
return glideImporter{loggers: loggers, sm: sm}
23+
func newGlideImporter(ctx *dep.Ctx, sm gps.SourceManager) glideImporter {
24+
return glideImporter{ctx: ctx, sm: sm}
2525
}
2626

2727
func (i glideImporter) HasConfig(dir string) bool {
@@ -35,7 +35,7 @@ func (i glideImporter) HasConfig(dir string) bool {
3535
}
3636

3737
func (i glideImporter) Import(dir string, pr gps.ProjectRoot) (*dep.Manifest, *dep.Lock, error) {
38-
files := newGlideFiles(i.loggers)
38+
files := newGlideFiles(i.ctx)
3939
err := files.load(dir)
4040
if err != nil {
4141
return nil, nil, err

cmd/dep/glide_importer_test.go

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,9 @@
55
package main
66

77
import (
8-
"log"
9-
"os"
108
"path/filepath"
119
"testing"
1210

13-
"github.com/golang/dep"
1411
"github.com/golang/dep/internal/gps"
1512
"github.com/golang/dep/internal/test"
1613
)
@@ -28,16 +25,11 @@ func TestGlideImport(t *testing.T) {
2825
h.TempCopy(filepath.Join(testGlideProjectRoot, glideYamlName), "glide.yaml")
2926
h.TempCopy(filepath.Join(testGlideProjectRoot, glideLockName), "glide.lock")
3027

31-
loggers := &dep.Loggers{
32-
Out: log.New(os.Stdout, "", 0),
33-
Err: log.New(os.Stderr, "", 0),
34-
Verbose: true,
35-
}
3628
projectRoot := h.Path(testGlideProjectRoot)
3729
sm, err := gps.NewSourceManager(h.Path(cacheDir))
3830
h.Must(err)
3931

40-
i := newGlideImporter(loggers, sm)
32+
i := newGlideImporter(newTestContext(), sm)
4133
if !i.HasConfig(projectRoot) {
4234
t.Fatal("Expected the importer to detect the glide configuration files")
4335
}
@@ -64,16 +56,11 @@ func TestGlideImport_MissingLockFile(t *testing.T) {
6456
h.TempDir(filepath.Join("src", "glidetest"))
6557
h.TempCopy(filepath.Join("glidetest", glideYamlName), "glide.yaml")
6658

67-
loggers := &dep.Loggers{
68-
Out: log.New(os.Stdout, "", 0),
69-
Err: log.New(os.Stderr, "", 0),
70-
Verbose: true,
71-
}
7259
projectRoot := h.Path("glidetest")
7360
sm, err := gps.NewSourceManager(h.Path(cacheDir))
7461
h.Must(err)
7562

76-
i := newGlideImporter(loggers, sm)
63+
i := newGlideImporter(newTestContext(), sm)
7764
if !i.HasConfig(projectRoot) {
7865
t.Fatal("The glide importer should gracefully handle when only glide.yaml is present")
7966
}

cmd/dep/init.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,13 @@ func (cmd *initCommand) Run(ctx *dep.Ctx, args []string) error {
9292
if err != nil {
9393
return errors.Wrap(err, "determineProjectRoot")
9494
}
95-
if ctx.Loggers.Verbose {
96-
ctx.Loggers.Err.Printf("dep: Finding dependencies for %q...\n", cpr)
97-
}
95+
ctx.Loggers.Err.Printf("Finding dependencies of %q...\n", cpr)
9896
pkgT, err := pkgtree.ListPackages(root, cpr)
9997
if err != nil {
10098
return errors.Wrap(err, "gps.ListPackages")
10199
}
102100
if ctx.Loggers.Verbose {
103-
ctx.Loggers.Err.Printf("dep: Found %d dependencies.\n", len(pkgT.Packages))
101+
ctx.Loggers.Err.Printf(" Found %d dependencies.\n", len(pkgT.Packages))
104102
}
105103
sm, err := ctx.SourceManager()
106104
if err != nil {
@@ -110,7 +108,6 @@ func (cmd *initCommand) Run(ctx *dep.Ctx, args []string) error {
110108
defer sm.Release()
111109

112110
// Generate a manifest and lock for the root project
113-
ctx.Loggers.Err.Println("Searching GOPATH for projects...")
114111
rootAnalyzer := newRootAnalyzer(cmd.skipTools, ctx, pkgT, sm)
115112
m, l, err := rootAnalyzer.DeriveRootManifestAndLock(root, gps.ProjectRoot(cpr))
116113
if err != nil {

cmd/dep/root_analyzer.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,11 @@ func overlayManifestAndLock(rootM *dep.Manifest, rootL *dep.Lock, m *dep.Manifes
111111

112112
func (a *rootAnalyzer) importManifestAndLock(dir string, pr gps.ProjectRoot) (*dep.Manifest, *dep.Lock, error) {
113113
importers := []importer{
114-
newGlideImporter(a.ctx.Loggers, a.sm),
114+
newGlideImporter(a.ctx, a.sm),
115115
}
116116

117117
for _, i := range importers {
118118
if i.HasConfig(dir) {
119-
if a.ctx.Loggers.Verbose {
120-
a.ctx.Loggers.Err.Printf("Importing %T configuration for %s. Run with -skip-tools to skip.", i, pr)
121-
}
122119
return i.Import(dir, pr)
123120
}
124121
}
@@ -132,6 +129,7 @@ func (a *rootAnalyzer) importManifestAndLock(dir string, pr gps.ProjectRoot) (*d
132129
func (a *rootAnalyzer) deriveManifestAndLockFromGopath() (*dep.Manifest, *dep.Lock, error) {
133130
var err error
134131

132+
a.ctx.Loggers.Err.Println("Searching GOPATH for projects...")
135133
a.pd, err = getProjectData(a.ctx, a.pkgT, a.sm)
136134
if err != nil {
137135
return nil, nil, err

internal/feedback/feedback.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const ConsTypeHint = "hint"
1717
// Dependency types
1818
const DepTypeDirect = "direct dep"
1919
const DepTypeTransitive = "transitive dep"
20+
const DepTypeImported = "imported dep"
2021

2122
// ConstraintFeedback holds project constraint feedback data
2223
type ConstraintFeedback struct {

0 commit comments

Comments
 (0)