added code to specify a gopath

This commit is contained in:
Brad Rydzewski 2014-06-12 12:51:55 -07:00
parent aec9b33048
commit 43e382b5a1
3 changed files with 18 additions and 5 deletions

View file

@ -1,4 +1,6 @@
image: go1.2 image: go1.2
git:
path: github.com/drone/drone
env: env:
- GOROOT=/usr/local/go - GOROOT=/usr/local/go
script: script:

View file

@ -170,6 +170,9 @@ func (w *worker) execute(task *BuildTask) error {
} }
func (w *worker) runBuild(task *BuildTask, buf io.Writer) (bool, error) { func (w *worker) runBuild(task *BuildTask, buf io.Writer) (bool, error) {
var path = filepath.Join(task.Repo.Host, task.Repo.Owner, task.Repo.Name)
path = git.GitPath(task.Script.Git, path)
repo := &r.Repo{ repo := &r.Repo{
Name: task.Repo.Host + task.Repo.Owner + task.Repo.Name, Name: task.Repo.Host + task.Repo.Owner + task.Repo.Name,
Path: task.Repo.CloneURL, Path: task.Repo.CloneURL,
@ -177,7 +180,7 @@ func (w *worker) runBuild(task *BuildTask, buf io.Writer) (bool, error) {
Commit: task.Commit.Sha, Commit: task.Commit.Sha,
PR: task.Commit.PullRequest, PR: task.Commit.PullRequest,
//TODO the builder should handle this //TODO the builder should handle this
Dir: filepath.Join("/var/cache/drone/src", task.Repo.Host, task.Repo.Owner, task.Repo.Name), Dir: filepath.Join("/var/cache/drone/src", path),
Depth: git.GitDepth(task.Script.Git), Depth: git.GitDepth(task.Script.Git),
} }

View file

@ -13,10 +13,7 @@ type Git struct {
Depth *int `yaml:"depth,omitempty"` Depth *int `yaml:"depth,omitempty"`
// The name of a directory to clone into. // The name of a directory to clone into.
// TODO this still needs to be implemented. this field is Path *string `yaml:"path,omitempty"`
// critical for forked Go projects, that need to clone
// to a specific repository.
Path string `yaml:"path,omitempty"`
} }
// GitDepth returns GitDefaultDepth // GitDepth returns GitDefaultDepth
@ -29,3 +26,14 @@ func GitDepth(g *Git) int {
} }
return *g.Depth return *g.Depth
} }
// GitPath returns the given default path
// when Git.Path is empty.
// GitPath returns Git.Path
// when it is not empty.
func GitPath(g *Git, defaultPath string) string {
if g == nil || g.Path == nil {
return defaultPath
}
return *g.Path
}