Add #include directive to .stignore (fixes #424)
Though breaks #502 in a way, as .stignore is not the only place where stuff gets defined anymore. Though it never was, as .stignore can be placed in each dir, but I think we should phase that out in favor of globbing which means that we can then have a single file, which means that we can have a UI for editing that. Alternative would be as suggested to include a .stglobalignore which is then synced as a normal file, but gets included by default. Then when the UI would have two editors, a local ignore, and a global ignore.
This commit is contained in:
parent
b0408ef5c6
commit
8c42aea827
|
@ -113,10 +113,10 @@ func loadIgnoreFile(ignFile, base string) []*regexp.Regexp {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
defer fd.Close()
|
defer fd.Close()
|
||||||
return parseIgnoreFile(fd, base)
|
return parseIgnoreFile(fd, base, filepath.Dir(ignFile))
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseIgnoreFile(fd io.Reader, base string) []*regexp.Regexp {
|
func parseIgnoreFile(fd io.Reader, base, dir string) []*regexp.Regexp {
|
||||||
var exps []*regexp.Regexp
|
var exps []*regexp.Regexp
|
||||||
scanner := bufio.NewScanner(fd)
|
scanner := bufio.NewScanner(fd)
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
|
@ -148,6 +148,14 @@ func parseIgnoreFile(fd io.Reader, base string) []*regexp.Regexp {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
exps = append(exps, exp)
|
exps = append(exps, exp)
|
||||||
|
} else if strings.HasPrefix(line, "#include ") {
|
||||||
|
includeFile := filepath.Join(dir, strings.Replace(line, "#include ", "", 1))
|
||||||
|
if _, err := os.Stat(includeFile); os.IsNotExist(err) {
|
||||||
|
l.Infoln("Could not open ignore include file", includeFile)
|
||||||
|
} else {
|
||||||
|
includes := loadIgnoreFile(includeFile, base)
|
||||||
|
exps = append(exps, includes...)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Path name or pattern, add it so it matches files both in
|
// Path name or pattern, add it so it matches files both in
|
||||||
// current directory and subdirs.
|
// current directory and subdirs.
|
||||||
|
|
|
@ -128,20 +128,20 @@ func TestIgnore(t *testing.T) {
|
||||||
*/other/test
|
*/other/test
|
||||||
**/deep
|
**/deep
|
||||||
`)
|
`)
|
||||||
patterns := parseIgnoreFile(patStr, "")
|
patterns := parseIgnoreFile(patStr, "", "")
|
||||||
|
|
||||||
patStr = bytes.NewBufferString(`
|
patStr = bytes.NewBufferString(`
|
||||||
bar
|
bar
|
||||||
z*
|
z*
|
||||||
q[abc]x
|
q[abc]x
|
||||||
`)
|
`)
|
||||||
patterns = append(patterns, parseIgnoreFile(patStr, "foo")...)
|
patterns = append(patterns, parseIgnoreFile(patStr, "foo", "")...)
|
||||||
|
|
||||||
patStr = bytes.NewBufferString(`
|
patStr = bytes.NewBufferString(`
|
||||||
quux
|
quux
|
||||||
.*
|
.*
|
||||||
`)
|
`)
|
||||||
patterns = append(patterns, parseIgnoreFile(patStr, "foo/baz")...)
|
patterns = append(patterns, parseIgnoreFile(patStr, "foo/baz", "")...)
|
||||||
|
|
||||||
var tests = []struct {
|
var tests = []struct {
|
||||||
f string
|
f string
|
||||||
|
|
Loading…
Reference in New Issue