internal/getproviders: SearchLocalDirectory can handle symlinks
Previously this was failing to treat symlinks to directories as unpacked layout, because our file info was only an Lstat result, not a full Stat. Now we'll resolve the symlink first, allowing us to handle a symlink to a directory. That's important because our internal/providercache behavior is to symlink from one cache to another where possible.
This commit is contained in:
parent
ad15459468
commit
eb25fe8b24
|
@ -68,6 +68,15 @@ func SearchLocalDirectory(baseDir string) (map[addrs.Provider]PackageMetaList, e
|
||||||
providerAddr = addrs.NewProvider(hostname, namespace, typeName)
|
providerAddr = addrs.NewProvider(hostname, namespace, typeName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The "info" passed to our function is an Lstat result, so it might
|
||||||
|
// be referring to a symbolic link. We'll do a full "Stat" on it
|
||||||
|
// now to make sure we're making tests against the real underlying
|
||||||
|
// filesystem object below.
|
||||||
|
info, err = os.Stat(fullPath)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to read metadata about %s: %s", fullPath, err)
|
||||||
|
}
|
||||||
|
|
||||||
switch len(parts) {
|
switch len(parts) {
|
||||||
case 5: // Might be unpacked layout
|
case 5: // Might be unpacked layout
|
||||||
if !info.IsDir() {
|
if !info.IsDir() {
|
||||||
|
|
Loading…
Reference in New Issue