mirror of https://github.com/golang/go.git
cmd/go/internal/modload: move fetch to import.go
From a comment in CL 262341. It makes more sense in import.go than in mvs.go. Change-Id: If4dfa1091077e110c5041bc849d99bc0be2bd8e2 Reviewed-on: https://go-review.googlesource.com/c/go/+/262780 Trust: Jay Conrod <jayconrod@google.com> Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
e981936855
commit
8ee4d6e1bf
|
|
@ -451,3 +451,42 @@ func dirInModule(path, mpath, mdir string, isLocal bool) (dir string, haveGoFile
|
|||
|
||||
return dir, res.haveGoFiles, res.err
|
||||
}
|
||||
|
||||
// fetch downloads the given module (or its replacement)
|
||||
// and returns its location.
|
||||
//
|
||||
// The isLocal return value reports whether the replacement,
|
||||
// if any, is local to the filesystem.
|
||||
func fetch(ctx context.Context, mod module.Version) (dir string, isLocal bool, err error) {
|
||||
if mod == Target {
|
||||
return ModRoot(), true, nil
|
||||
}
|
||||
if r := Replacement(mod); r.Path != "" {
|
||||
if r.Version == "" {
|
||||
dir = r.Path
|
||||
if !filepath.IsAbs(dir) {
|
||||
dir = filepath.Join(ModRoot(), dir)
|
||||
}
|
||||
// Ensure that the replacement directory actually exists:
|
||||
// dirInModule does not report errors for missing modules,
|
||||
// so if we don't report the error now, later failures will be
|
||||
// very mysterious.
|
||||
if _, err := os.Stat(dir); err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
// Semantically the module version itself “exists” — we just don't
|
||||
// have its source code. Remove the equivalence to os.ErrNotExist,
|
||||
// and make the message more concise while we're at it.
|
||||
err = fmt.Errorf("replacement directory %s does not exist", r.Path)
|
||||
} else {
|
||||
err = fmt.Errorf("replacement directory %s: %w", r.Path, err)
|
||||
}
|
||||
return dir, true, module.VersionError(mod, err)
|
||||
}
|
||||
return dir, true, nil
|
||||
}
|
||||
mod = r
|
||||
}
|
||||
|
||||
dir, err = modfetch.Download(ctx, mod)
|
||||
return dir, false, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,9 +7,6 @@ package modload
|
|||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
|
||||
"cmd/go/internal/modfetch"
|
||||
|
|
@ -125,42 +122,3 @@ func (*mvsReqs) next(m module.Version) (module.Version, error) {
|
|||
}
|
||||
return module.Version{Path: m.Path, Version: "none"}, nil
|
||||
}
|
||||
|
||||
// fetch downloads the given module (or its replacement)
|
||||
// and returns its location.
|
||||
//
|
||||
// The isLocal return value reports whether the replacement,
|
||||
// if any, is local to the filesystem.
|
||||
func fetch(ctx context.Context, mod module.Version) (dir string, isLocal bool, err error) {
|
||||
if mod == Target {
|
||||
return ModRoot(), true, nil
|
||||
}
|
||||
if r := Replacement(mod); r.Path != "" {
|
||||
if r.Version == "" {
|
||||
dir = r.Path
|
||||
if !filepath.IsAbs(dir) {
|
||||
dir = filepath.Join(ModRoot(), dir)
|
||||
}
|
||||
// Ensure that the replacement directory actually exists:
|
||||
// dirInModule does not report errors for missing modules,
|
||||
// so if we don't report the error now, later failures will be
|
||||
// very mysterious.
|
||||
if _, err := os.Stat(dir); err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
// Semantically the module version itself “exists” — we just don't
|
||||
// have its source code. Remove the equivalence to os.ErrNotExist,
|
||||
// and make the message more concise while we're at it.
|
||||
err = fmt.Errorf("replacement directory %s does not exist", r.Path)
|
||||
} else {
|
||||
err = fmt.Errorf("replacement directory %s: %w", r.Path, err)
|
||||
}
|
||||
return dir, true, module.VersionError(mod, err)
|
||||
}
|
||||
return dir, true, nil
|
||||
}
|
||||
mod = r
|
||||
}
|
||||
|
||||
dir, err = modfetch.Download(ctx, mod)
|
||||
return dir, false, err
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue