Fix relative path
This commit is contained in:
parent
c06142941d
commit
b2791b7360
41
predicate.go
41
predicate.go
|
@ -3,6 +3,7 @@ package complete
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/posener/complete/match"
|
"github.com/posener/complete/match"
|
||||||
)
|
)
|
||||||
|
@ -53,8 +54,22 @@ func PredictSet(options ...string) Predicate {
|
||||||
// path, if no path was started to be typed, it will complete to directories
|
// path, if no path was started to be typed, it will complete to directories
|
||||||
// in the current working directory.
|
// in the current working directory.
|
||||||
func PredictDirs(last string) (options []match.Matcher) {
|
func PredictDirs(last string) (options []match.Matcher) {
|
||||||
dir := dirFromLast(last)
|
path := dirFromLast(last)
|
||||||
return dirsAt(dir)
|
dirs := []string{}
|
||||||
|
filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if info.IsDir() {
|
||||||
|
dirs = append(dirs, path)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
// if given path is not absolute, return relative paths
|
||||||
|
if !filepath.IsAbs(path) {
|
||||||
|
filesToRel(dirs)
|
||||||
|
}
|
||||||
|
return filesToMatchers(dirs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// PredictFiles will search for files matching the given pattern in the started to
|
// PredictFiles will search for files matching the given pattern in the started to
|
||||||
|
@ -75,23 +90,6 @@ func PredictFiles(pattern string) Predicate {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func dirsAt(path string) []match.Matcher {
|
|
||||||
dirs := []string{}
|
|
||||||
filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
|
|
||||||
if err != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if info.IsDir() {
|
|
||||||
dirs = append(dirs, path)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
if !filepath.IsAbs(path) {
|
|
||||||
filesToRel(dirs)
|
|
||||||
}
|
|
||||||
return filesToMatchers(dirs)
|
|
||||||
}
|
|
||||||
|
|
||||||
// filesToRel, change list of files to their names in the relative
|
// filesToRel, change list of files to their names in the relative
|
||||||
// to current directory form.
|
// to current directory form.
|
||||||
func filesToRel(files []string) {
|
func filesToRel(files []string) {
|
||||||
|
@ -111,7 +109,10 @@ func filesToRel(files []string) {
|
||||||
if rel == "." {
|
if rel == "." {
|
||||||
rel = ""
|
rel = ""
|
||||||
}
|
}
|
||||||
files[i] = "./" + rel
|
if !strings.HasPrefix(rel, ".") {
|
||||||
|
rel = "./" + rel
|
||||||
|
}
|
||||||
|
files[i] = rel
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue