Search for READMEs case-insensitively & recursively

This commit is contained in:
Christian Muehlhaeuser 2020-01-13 01:39:33 +01:00
parent 85cd31dfc4
commit c5517add19
No known key found for this signature in database
GPG key ID: 3CF9FA45CA1EBB7E

32
main.go
View file

@ -80,21 +80,37 @@ func readerFromArg(s string) (*Source, error) {
}
}
// a valid file or directory:
// a directory:
if len(s) == 0 {
// use the current working dir if no argument was supplied
s = "."
}
st, err := os.Stat(s)
if len(s) == 0 || (err == nil && st.IsDir()) {
for _, v := range readmeNames {
n := filepath.Join(s, v)
r, err := os.Open(n)
if err == nil {
u, _ := filepath.Abs(n)
return &Source{r, u}, nil
if err == nil && st.IsDir() {
var src *Source
_ = filepath.Walk(s, func(path string, info os.FileInfo, err error) error {
for _, v := range readmeNames {
if strings.EqualFold(filepath.Base(path), v) {
r, err := os.Open(path)
if err != nil {
continue
}
u, _ := filepath.Abs(path)
src = &Source{r, u}
return errors.New("source found")
}
}
return nil
})
if src != nil {
return src, nil
}
return nil, errors.New("missing markdown source")
}
// a file:
r, err := os.Open(s)
u, _ := filepath.Abs(s)
return &Source{r, u}, err