1
0
mirror of https://github.com/go-task/task.git synced 2025-11-06 09:09:13 +02:00

Update glob.go

- Rename glob() to globs()
- Add glob() which handles a single glob pattern
- Change glob() and globs() so that they do not return directoreis
This commit is contained in:
Seiichi Uchida
2019-08-21 13:33:12 +09:00
parent 0cb298ebdf
commit d561e40817
3 changed files with 35 additions and 13 deletions

View File

@@ -28,7 +28,7 @@ func (c *Checksum) IsUpToDate() (bool, error) {
data, _ := ioutil.ReadFile(checksumFile) data, _ := ioutil.ReadFile(checksumFile)
oldMd5 := strings.TrimSpace(string(data)) oldMd5 := strings.TrimSpace(string(data))
sources, err := glob(c.Dir, c.Sources) sources, err := globs(c.Dir, c.Sources)
if err != nil { if err != nil {
return false, err return false, err
} }

View File

@@ -1,6 +1,7 @@
package status package status
import ( import (
"os"
"path/filepath" "path/filepath"
"sort" "sort"
@@ -9,21 +10,42 @@ import (
"github.com/mattn/go-zglob" "github.com/mattn/go-zglob"
) )
func glob(dir string, globs []string) (files []string, err error) { func globs(dir string, globs []string) ([]string, error){
files := make([]string, 0)
for _, g := range globs { for _, g := range globs {
if !filepath.IsAbs(g) { f, err := glob(dir, g)
g = filepath.Join(dir, g)
}
g, err = execext.Expand(g)
if err != nil {
return nil, err
}
f, err := zglob.Glob(g)
if err != nil { if err != nil {
continue continue
} }
files = append(files, f...) files = append(files, f...)
} }
sort.Strings(files) sort.Strings(files)
return return files, nil
}
func glob(dir string, g string) ([]string, error) {
files := make([]string, 0)
if !filepath.IsAbs(g) {
g = filepath.Join(dir, g)
}
g, err := execext.Expand(g)
if err != nil {
return nil, err
}
fs, err := zglob.Glob(g)
if err != nil {
return nil, err
}
for _, f := range fs {
info, err := os.Stat(f)
if err != nil {
continue
}
if info.IsDir() {
continue
}
files = append(files, f)
}
sort.Strings(files)
return files, nil
} }

View File

@@ -19,11 +19,11 @@ func (t *Timestamp) IsUpToDate() (bool, error) {
return false, nil return false, nil
} }
sources, err := glob(t.Dir, t.Sources) sources, err := globs(t.Dir, t.Sources)
if err != nil { if err != nil {
return false, nil return false, nil
} }
generates, err := glob(t.Dir, t.Generates) generates, err := globs(t.Dir, t.Generates)
if err != nil { if err != nil {
return false, nil return false, nil
} }