Skip to content
This repository was archived by the owner on Sep 9, 2020. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion analyzer.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ func (a Analyzer) DeriveManifestAndLock(path string, n gps.ProjectRoot) (gps.Man
}
defer f.Close()

m, err := readManifest(f)
// Ignore warnings irrelevant to user.
m, _, err := readManifest(f)
if err != nil {
return nil, nil, err
}
Expand Down
12 changes: 6 additions & 6 deletions cmd/dep/ensure.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,9 @@ type ensureCommand struct {
overrides stringSlice
}

func (cmd *ensureCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error {
func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error {
if cmd.examples {
loggers.Err.Println(strings.TrimSpace(ensureExamples))
ctx.Loggers.Err.Println(strings.TrimSpace(ensureExamples))
return nil
}

Expand All @@ -120,8 +120,8 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) err
defer sm.Release()

params := p.MakeParams()
if loggers.Verbose {
params.TraceLogger = loggers.Err
if ctx.Loggers.Verbose {
params.TraceLogger = ctx.Loggers.Err
}
params.RootPackageTree, err = pkgtree.ListPackages(p.AbsRoot, string(p.ImportRoot))
if err != nil {
Expand All @@ -135,7 +135,7 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) err
if cmd.update {
applyUpdateArgs(args, &params)
} else {
err := applyEnsureArgs(loggers.Err, args, cmd.overrides, p, sm, &params)
err := applyEnsureArgs(ctx.Loggers.Err, args, cmd.overrides, p, sm, &params)
if err != nil {
return err
}
Expand Down Expand Up @@ -168,7 +168,7 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) err
return err
}
if cmd.dryRun {
return sw.PrintPreparedActions(loggers.Out)
return sw.PrintPreparedActions(ctx.Loggers.Out)
}

return errors.Wrap(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor")
Expand Down
4 changes: 2 additions & 2 deletions cmd/dep/hash_in.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func (cmd *hashinCommand) Register(fs *flag.FlagSet) {}

type hashinCommand struct{}

func (hashinCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error {
func (hashinCommand) Run(ctx *dep.Ctx, args []string) error {
p, err := ctx.LoadProject("")
if err != nil {
return err
Expand Down Expand Up @@ -51,6 +51,6 @@ func (hashinCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error {
if err != nil {
return errors.Wrap(err, "prepare solver")
}
loggers.Out.Println(gps.HashingInputsAsString(s))
ctx.Loggers.Out.Println(gps.HashingInputsAsString(s))
return nil
}
48 changes: 24 additions & 24 deletions cmd/dep/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func trimPathPrefix(p1, p2 string) string {
return p1
}

func (cmd *initCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error {
func (cmd *initCommand) Run(ctx *dep.Ctx, args []string) error {
if len(args) > 1 {
return errors.Errorf("too many args (%d)", len(args))
}
Expand Down Expand Up @@ -94,15 +94,15 @@ func (cmd *initCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error
if err != nil {
return errors.Wrap(err, "determineProjectRoot")
}
if loggers.Verbose {
loggers.Err.Printf("dep: Finding dependencies for %q...\n", cpr)
if ctx.Loggers.Verbose {
ctx.Loggers.Err.Printf("dep: Finding dependencies for %q...\n", cpr)
}
pkgT, err := pkgtree.ListPackages(root, cpr)
if err != nil {
return errors.Wrap(err, "gps.ListPackages")
}
if loggers.Verbose {
loggers.Err.Printf("dep: Found %d dependencies.\n", len(pkgT.Packages))
if ctx.Loggers.Verbose {
ctx.Loggers.Err.Printf("dep: Found %d dependencies.\n", len(pkgT.Packages))
}
sm, err := ctx.SourceManager()
if err != nil {
Expand All @@ -111,7 +111,7 @@ func (cmd *initCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error
sm.UseDefaultSignalHandling()
defer sm.Release()

pd, err := getProjectData(ctx, loggers, pkgT, cpr, sm)
pd, err := getProjectData(ctx, pkgT, cpr, sm)
if err != nil {
return err
}
Expand Down Expand Up @@ -144,8 +144,8 @@ func (cmd *initCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error
}

// Run solver with project versions found on disk
if loggers.Verbose {
loggers.Err.Println("dep: Solving...")
if ctx.Loggers.Verbose {
ctx.Loggers.Err.Println("dep: Solving...")
}
params := gps.SolveParameters{
RootDir: root,
Expand All @@ -155,8 +155,8 @@ func (cmd *initCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error
ProjectAnalyzer: dep.Analyzer{},
}

if loggers.Verbose {
params.TraceLogger = loggers.Err
if ctx.Loggers.Verbose {
params.TraceLogger = ctx.Loggers.Err
}

s, err := gps.Prepare(params, sm)
Expand Down Expand Up @@ -190,8 +190,8 @@ func (cmd *initCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error

l.Memo = s.HashInputs()

if loggers.Verbose {
loggers.Err.Println("dep: Writing manifest and lock files.")
if ctx.Loggers.Verbose {
ctx.Loggers.Err.Println("dep: Writing manifest and lock files.")
}

sw, err := dep.NewSafeWriter(m, nil, l, dep.VendorAlways)
Expand Down Expand Up @@ -277,7 +277,7 @@ type projectData struct {
ondisk map[gps.ProjectRoot]gps.Version // projects that were found on disk
}

func getProjectData(ctx *dep.Ctx, loggers *Loggers, pkgT pkgtree.PackageTree, cpr string, sm gps.SourceManager) (projectData, error) {
func getProjectData(ctx *dep.Ctx, pkgT pkgtree.PackageTree, cpr string, sm gps.SourceManager) (projectData, error) {
constraints := make(gps.ProjectConstraints)
dependencies := make(map[gps.ProjectRoot][]string)
packages := make(map[string]bool)
Expand All @@ -290,7 +290,7 @@ func getProjectData(ctx *dep.Ctx, loggers *Loggers, pkgT pkgtree.PackageTree, cp
if err := sm.SyncSourceFor(gps.ProjectIdentifier{ProjectRoot: pr}); err != nil {
message = "Unable to cache"
}
loggers.Err.Printf("%s %s\n", message, pr)
ctx.Loggers.Err.Printf("%s %s\n", message, pr)
syncDepGroup.Done()
}

Expand All @@ -299,8 +299,8 @@ func getProjectData(ctx *dep.Ctx, loggers *Loggers, pkgT pkgtree.PackageTree, cp
return projectData{}, nil
}

if loggers.Verbose {
loggers.Err.Println("dep: Building dependency graph...")
if ctx.Loggers.Verbose {
ctx.Loggers.Err.Println("dep: Building dependency graph...")
}
// Exclude stdlib imports from the list returned from Flatten().
const omitStdlib = false
Expand All @@ -318,16 +318,16 @@ func getProjectData(ctx *dep.Ctx, loggers *Loggers, pkgT pkgtree.PackageTree, cp
syncDepGroup.Add(1)
go syncDep(pr, sm)

if loggers.Verbose {
loggers.Err.Printf("dep: Found import of %q, analyzing...\n", ip)
if ctx.Loggers.Verbose {
ctx.Loggers.Err.Printf("dep: Found import of %q, analyzing...\n", ip)
}

dependencies[pr] = []string{ip}
v, err := ctx.VersionInWorkspace(pr)
if err != nil {
notondisk[pr] = true
if loggers.Verbose {
loggers.Err.Printf("dep: Could not determine version for %q, omitting from generated manifest\n", pr)
if ctx.Loggers.Verbose {
ctx.Loggers.Err.Printf("dep: Could not determine version for %q, omitting from generated manifest\n", pr)
}
continue
}
Expand All @@ -336,8 +336,8 @@ func getProjectData(ctx *dep.Ctx, loggers *Loggers, pkgT pkgtree.PackageTree, cp
constraints[pr] = getProjectPropertiesFromVersion(v)
}

if loggers.Verbose {
loggers.Err.Printf("dep: Analyzing transitive imports...\n")
if ctx.Loggers.Verbose {
ctx.Loggers.Err.Printf("dep: Analyzing transitive imports...\n")
}
// Explore the packages we've found for transitive deps, either
// completing the lock or identifying (more) missing projects that we'll
Expand All @@ -357,8 +357,8 @@ func getProjectData(ctx *dep.Ctx, loggers *Loggers, pkgT pkgtree.PackageTree, cp
dft = func(pkg string) error {
switch colors[pkg] {
case white:
if loggers.Verbose {
loggers.Err.Printf("dep: Analyzing %q...\n", pkg)
if ctx.Loggers.Verbose {
ctx.Loggers.Err.Printf("dep: Analyzing %q...\n", pkg)
}
colors[pkg] = grey

Expand Down
14 changes: 0 additions & 14 deletions cmd/dep/loggers.go

This file was deleted.

8 changes: 4 additions & 4 deletions cmd/dep/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ type command interface {
LongHelp() string // "Foo the first bar meeting the following conditions..."
Register(*flag.FlagSet) // command-specific flags
Hidden() bool // indicates whether the command should be hidden from help output
Run(*dep.Ctx, *Loggers, []string) error
Run(*dep.Ctx, []string) error
}

func main() {
Expand Down Expand Up @@ -141,22 +141,22 @@ func (c *Config) Run() (exitCode int) {
return
}

loggers := &Loggers{
loggers := &dep.Loggers{
Out: log.New(c.Stdout, "", 0),
Err: errLogger,
Verbose: *verbose,
}

// Set up the dep context.
ctx, err := dep.NewContext(c.WorkingDir, c.Env)
ctx, err := dep.NewContext(c.WorkingDir, c.Env, loggers)
if err != nil {
loggers.Err.Println(err)
exitCode = 1
return
}

// Run the command with the post-flag-processing args.
if err := cmd.Run(ctx, loggers, fs.Args()); err != nil {
if err := cmd.Run(ctx, fs.Args()); err != nil {
errLogger.Printf("%v\n", err)
exitCode = 1
return
Expand Down
6 changes: 3 additions & 3 deletions cmd/dep/prune.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func (cmd *pruneCommand) Hidden() bool { return false }
func (cmd *pruneCommand) Register(fs *flag.FlagSet) {
}

func (cmd *pruneCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error {
func (cmd *pruneCommand) Run(ctx *dep.Ctx, args []string) error {
p, err := ctx.LoadProject("")
if err != nil {
return err
Expand All @@ -59,8 +59,8 @@ func (cmd *pruneCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) erro
params := p.MakeParams()
params.RootPackageTree = ptree

if loggers.Verbose {
params.TraceLogger = loggers.Err
if ctx.Loggers.Verbose {
params.TraceLogger = ctx.Loggers.Err
}

s, err := gps.Prepare(params, sm)
Expand Down
10 changes: 5 additions & 5 deletions cmd/dep/remove.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ type removeCommand struct {
keepSource bool
}

func (cmd *removeCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error {
func (cmd *removeCommand) Run(ctx *dep.Ctx, args []string) error {
p, err := ctx.LoadProject("")
if err != nil {
return err
Expand Down Expand Up @@ -89,7 +89,7 @@ func (cmd *removeCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) err
// not being able to detect the root for an import path that's
// actually in the import list is a deeper problem. However,
// it's not our direct concern here, so we just warn.
loggers.Err.Printf("dep: could not infer root for %q\n", pr)
ctx.Loggers.Err.Printf("dep: could not infer root for %q\n", pr)
continue
}
otherroots[pr] = true
Expand All @@ -104,7 +104,7 @@ func (cmd *removeCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) err
}

if len(rm) == 0 {
loggers.Err.Println("dep: nothing to do")
ctx.Loggers.Err.Println("dep: nothing to do")
return nil
}
} else {
Expand Down Expand Up @@ -162,8 +162,8 @@ func (cmd *removeCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) err
params := p.MakeParams()
params.RootPackageTree = pkgT

if loggers.Verbose {
params.TraceLogger = loggers.Err
if ctx.Loggers.Verbose {
params.TraceLogger = ctx.Loggers.Err
}
s, err := gps.Prepare(params, sm)
if err != nil {
Expand Down
8 changes: 4 additions & 4 deletions cmd/dep/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ func (out *dotOutput) MissingHeader() {}
func (out *dotOutput) MissingLine(ms *MissingStatus) {}
func (out *dotOutput) MissingFooter() {}

func (cmd *statusCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error {
func (cmd *statusCommand) Run(ctx *dep.Ctx, args []string) error {
p, err := ctx.LoadProject("")
if err != nil {
return err
Expand Down Expand Up @@ -214,11 +214,11 @@ func (cmd *statusCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) err
}
}

if err := runStatusAll(loggers, out, p, sm); err != nil {
if err := runStatusAll(ctx.Loggers, out, p, sm); err != nil {
return err
}

loggers.Out.Print(buf.String())
ctx.Loggers.Out.Print(buf.String())
return nil
}

Expand All @@ -239,7 +239,7 @@ type MissingStatus struct {
MissingPackages []string
}

func runStatusAll(loggers *Loggers, out outputter, p *dep.Project, sm gps.SourceManager) error {
func runStatusAll(loggers *dep.Loggers, out outputter, p *dep.Project, sm gps.SourceManager) error {
if p.Lock == nil {
// TODO if we have no lock file, do...other stuff
return nil
Expand Down
19 changes: 16 additions & 3 deletions context.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package dep

import (
"log"
"os"
"path/filepath"
"runtime"
Expand All @@ -21,12 +22,20 @@ type Ctx struct {
GOPATH string // Selected Go path
GOPATHS []string // Other Go paths
WorkingDir string
*Loggers
}

// Loggers holds standard loggers and a verbosity flag.
type Loggers struct {
Out, Err *log.Logger
// Whether verbose logging is enabled.
Verbose bool
}

// NewContext creates a struct with the project's GOPATH. It assumes
// that of your "GOPATH"'s we want the one we are currently in.
func NewContext(wd string, env []string) (*Ctx, error) {
ctx := &Ctx{WorkingDir: wd}
func NewContext(wd string, env []string, loggers *Loggers) (*Ctx, error) {
ctx := &Ctx{WorkingDir: wd, Loggers: loggers}

GOPATH := getEnv(env, "GOPATH")
if GOPATH == "" {
Expand Down Expand Up @@ -144,7 +153,11 @@ func (c *Ctx) LoadProject(path string) (*Project, error) {
}
defer mf.Close()

p.Manifest, err = readManifest(mf)
var warns []error
p.Manifest, warns, err = readManifest(mf)
for _, warn := range warns {
c.Loggers.Err.Printf("dep: WARNING: %v\n", warn)
}
if err != nil {
return nil, errors.Errorf("error while parsing %s: %s", mp, err)
}
Expand Down
Loading