Resolve symlinks in config directory
Docker/Openshift/Kubernetes mount the config file as a symbolic link and IsDir returns true if the file is a symlink. Before calling IsDir, the symlink should be resolved to determine if it points at a file or directory. Fixes #3753
This commit is contained in:
parent
fad2531967
commit
81d0ffc959
|
@ -165,12 +165,25 @@ func (b *Builder) ReadPath(path string) ([]Source, error) {
|
||||||
|
|
||||||
var sources []Source
|
var sources []Source
|
||||||
for _, fi := range fis {
|
for _, fi := range fis {
|
||||||
|
fp := filepath.Join(path, fi.Name())
|
||||||
|
// check for a symlink and resolve the path
|
||||||
|
if fi.Mode()&os.ModeSymlink > 0 {
|
||||||
|
var err error
|
||||||
|
fp, err = filepath.EvalSymlinks(fp)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
fi, err = os.Stat(fp)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
// do not recurse into sub dirs
|
// do not recurse into sub dirs
|
||||||
if fi.IsDir() {
|
if fi.IsDir() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
src, err := b.ReadFile(filepath.Join(path, fi.Name()))
|
src, err := b.ReadFile(fp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue