22 lines
496 B
Go
22 lines
496 B
Go
|
package fs
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"path/filepath"
|
||
|
)
|
||
|
|
||
|
// Resolve returns the absolute file path, with all symlinks resolved.
|
||
|
func Resolve(filePath string) (string, error) {
|
||
|
if filePath == "" {
|
||
|
return "", errors.New("no such file or directory")
|
||
|
}
|
||
|
|
||
|
if target, err := filepath.EvalSymlinks(filePath); err != nil {
|
||
|
return "", errors.New("no such file or directory")
|
||
|
} else if target, err = filepath.Abs(target); target != "" {
|
||
|
return target, err
|
||
|
} else {
|
||
|
return filepath.Abs(filePath)
|
||
|
}
|
||
|
}
|