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

Add analyzer and getter for source manager #7

Closed
wants to merge 3 commits into from
Closed
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
22 changes: 22 additions & 0 deletions analyzer.go
Original file line number Diff line number Diff line change
@@ -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
}
24 changes: 24 additions & 0 deletions sm.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// 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"
)

func getSourceManager() (*gps.SourceMgr, error) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I call this twice, I assume that I get an error on the second call based on what we discussed in slack?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

correct. it would be a gps.CouldNotCreateLockError, which has enough info in it to differentiate from e.g. fs perm problems

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So now, you'd have to pick one place that you create the sm, which then is also the point where you have to decide about Release()ing it.

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"))
}