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

Commit

Permalink
move Logger into Ctx; restore logging
Browse files Browse the repository at this point in the history
  • Loading branch information
jmank88 committed May 11, 2017
1 parent 070b761 commit cbded81
Show file tree
Hide file tree
Showing 15 changed files with 95 additions and 87 deletions.
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

0 comments on commit cbded81

Please sign in to comment.