diff options
Diffstat (limited to 'repoClone.go')
| -rw-r--r-- | repoClone.go | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/repoClone.go b/repoClone.go index 75dd393..1c1ffa0 100644 --- a/repoClone.go +++ b/repoClone.go @@ -80,7 +80,7 @@ func (f *Forge) guessPaths(path string) (string, string, string, bool, error) { // TODO: make some config file for things like this // can be used to work around temporary problems -func clonePathHack(dirname string, basedir string, gopath string) error { +func clonePathHack(dirname string, basedir string, gopath string) (string, error) { // newdir = helloworld // basedir = /home/jcarr/go/src/go.wit.com/apps // giturl = https://gitea.wit.com/gui/helloworld @@ -117,7 +117,7 @@ func clonePathHack(dirname string, basedir string, gopath string) error { return cloneActual(dirname, basedir, "https://"+"go.googlesource.com/appengine") } - return errors.New("no gopath override here") + return "", errors.New("no gopath override here") } // attempt to git clone if the go path doesn't exist @@ -126,7 +126,7 @@ func clonePathHack(dirname string, basedir string, gopath string) error { // gopath = go.wit.com/apps/helloworld func (f *Forge) Clone(gopath string) (*gitpb.Repo, error) { var err error - pb, err := f.Repos.NewGoPath(f.goSrc, gopath) + pb, err := f.Repos.NewGoPath(f.goSrc, gopath, "") if err == nil { return pb, err } @@ -142,9 +142,9 @@ func (f *Forge) Clone(gopath string) (*gitpb.Repo, error) { // try a direct git clone against the gopath // cloneActual("helloworld", "/home/jcarr/go/src/go.wit.com/apps", "https://go.wit.com/apps/helloworld") - if err = cloneActual(dirname, basedir, url); err == nil { + if finalurl, err := cloneActual(dirname, basedir, url); err == nil { // git clone worked! - return f.Repos.NewGoPath(f.goSrc, gopath) + return f.Repos.NewGoPath(f.goSrc, gopath, finalurl) } log.Info("direct attempt at git clone failed", url) @@ -155,9 +155,9 @@ func (f *Forge) Clone(gopath string) (*gitpb.Repo, error) { log.Info("findGoImport() DID NOT WORK", url) log.Info("findGoImport() DID NOT WORK", err) } else { - if err := cloneActual(dirname, basedir, url); err == nil { + if finalurl, err := cloneActual(dirname, basedir, url); err == nil { // git clone worked! - return f.Repos.NewGoPath(f.goSrc, gopath) + return f.Repos.NewGoPath(f.goSrc, gopath, finalurl) } } log.Info("git clone from 'go-import' info failed", url) @@ -167,18 +167,18 @@ func (f *Forge) Clone(gopath string) (*gitpb.Repo, error) { if url, err = runGoList(gopath); err != nil { log.Info("go list failed", err) } else { - if err := cloneActual(dirname, basedir, url); err == nil { + if finalurl, err := cloneActual(dirname, basedir, url); err == nil { // git clone worked! - return f.Repos.NewGoPath(f.goSrc, gopath) + return f.Repos.NewGoPath(f.goSrc, gopath, finalurl) } } log.Info("git clone from 'git list' info failed", url) // try to parse a redirect - if err = clonePathHack(dirname, basedir, gopath); err == nil { + if finalurl, err := clonePathHack(dirname, basedir, gopath); err == nil { // WTF didn't go-import or go list work? - return f.Repos.NewGoPath(f.goSrc, gopath) + return f.Repos.NewGoPath(f.goSrc, gopath, finalurl) } return nil, errors.New("can not find git sources for gopath " + gopath) @@ -187,7 +187,7 @@ func (f *Forge) Clone(gopath string) (*gitpb.Repo, error) { // newdir = helloworld // basedir = /home/jcarr/go/src/go.wit.com/apps // giturl = https://gitea.wit.com/gui/helloworld -func cloneActual(newdir, basedir, giturl string) error { +func cloneActual(newdir, basedir, giturl string) (string, error) { log.Info("cloneActual() newdir =", newdir) log.Info("cloneActual() basedir =", basedir) log.Info("cloneActual() giturl =", giturl) @@ -197,7 +197,7 @@ func cloneActual(newdir, basedir, giturl string) error { err := os.Chdir(basedir) if err != nil { log.Warn("chdir failed", basedir, err) - return err + return giturl, err } cmd := []string{"git", "clone", "--verbose", "--progress", giturl, newdir} @@ -205,22 +205,22 @@ func cloneActual(newdir, basedir, giturl string) error { r := shell.PathRunRealtime(basedir, cmd) if r.Error != nil { log.Warn("git clone error", r.Error) - return r.Error + return giturl, r.Error } fullpath := filepath.Join(basedir, newdir) if !IsDirectory(fullpath) { log.Info("git clone failed", giturl) - return errors.New("git clone failed " + giturl) + return giturl, errors.New("git clone failed " + giturl) } gitdir := filepath.Join(fullpath, ".git") if IsDirectory(gitdir) { log.Info("git cloned worked to", fullpath) - return nil + return giturl, nil } // git clone didn't really work but did make a directory log.Info("fullpath is probably empty", fullpath) - return errors.New("crapnuts. rmdir fullpath here? " + fullpath) + return giturl, errors.New("crapnuts. rmdir fullpath here? " + fullpath) } // check the server for the current go path to git url mapping |
