From fd871f3f1c02ef175a446a59299ac6140fa9a519 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Tue, 18 Oct 2016 11:29:29 -0400 Subject: [PATCH 1/3] Add rudimentary analyzer This is the minimum amount necessary to get a SourceManager working. --- analyzer.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 analyzer.go diff --git a/analyzer.go b/analyzer.go new file mode 100644 index 0000000000..326f01df0a --- /dev/null +++ b/analyzer.go @@ -0,0 +1,22 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "github.com/Masterminds/semver" + "github.com/sdboyer/gps" +) + +type analyzer struct{} + +func (a analyzer) DeriveManifestAndLock(path string, n gps.ProjectRoot) (gps.Manifest, gps.Lock, error) { + // TODO initial impl would just be looking for our own manifest and lock + return nil, nil, nil +} + +func (a analyzer) Info() (name string, version *semver.Version) { + v, _ := semver.NewVersion("v0.0.1") + return "example-analyzer", v +} From 0c6edc3f8e6a514ffdac99ff17ddc755f53c653b Mon Sep 17 00:00:00 2001 From: sam boyer Date: Tue, 18 Oct 2016 11:30:17 -0400 Subject: [PATCH 2/3] Add singleton to handle SourceManager --- sm.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 sm.go diff --git a/sm.go b/sm.go new file mode 100644 index 0000000000..7b5c31d83f --- /dev/null +++ b/sm.go @@ -0,0 +1,31 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "fmt" + "os" + "path/filepath" + + "github.com/sdboyer/gps" +) + +// Singletons aren't the best, but it's sufficient for experimentation +var sm *gps.SourceMgr + +func getSourceManager() (*gps.SourceMgr, error) { + if sm != nil { + return sm, nil + } + + gopath := os.Getenv("GOPATH") + if gopath == "" { + return nil, fmt.Errorf("GOPATH is not set") + } + // Use the first entry in GOPATH for the depcache + first := filepath.SplitList(gopath)[0] + + return gps.NewSourceManager(analyzer{}, filepath.Join(first, "depcache")) +} From 0b0b135cc64046ee95f731695336c437a0873582 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Tue, 18 Oct 2016 15:10:48 -0400 Subject: [PATCH 3/3] Get rid of package-level var for SourceMgr --- sm.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/sm.go b/sm.go index 7b5c31d83f..ae4218f5e7 100644 --- a/sm.go +++ b/sm.go @@ -12,14 +12,7 @@ import ( "github.com/sdboyer/gps" ) -// Singletons aren't the best, but it's sufficient for experimentation -var sm *gps.SourceMgr - func getSourceManager() (*gps.SourceMgr, error) { - if sm != nil { - return sm, nil - } - gopath := os.Getenv("GOPATH") if gopath == "" { return nil, fmt.Errorf("GOPATH is not set")