bake listing files not cached in config

This commit is contained in:
Bel LaPointe
2023-11-06 12:25:52 -07:00
parent 8dacd8da5d
commit d36f9e74b3
4 changed files with 56 additions and 20 deletions

View File

@@ -4,11 +4,12 @@ import (
"flag"
"fmt"
"os"
"path/filepath"
"strings"
)
type config struct {
targets []string
target string
root string
tags []string
search string
@@ -25,8 +26,7 @@ func getConfig() config {
}
var config config
var target string
flag.StringVar(&target, "f", defaultFilepath, "($PTTODO_FILE) path to yaml file or dir (starting with root then alphabetical for dir)")
flag.StringVar(&config.target, "f", defaultFilepath, "($PTTODO_FILE) path to yaml file or dir (starting with root then alphabetical for dir)")
flag.StringVar(&config.root, "root", DUMP_TODO, "path to pretty print ("+fmt.Sprint([]string{DUMP_ALL, DUMP_TODO, DUMP_SCHEDULED, DUMP_DONE})+")")
var tagss string
flag.StringVar(&tagss, "tags", "", "csv of all tags to find, -x to invert")
@@ -38,10 +38,37 @@ func getConfig() config {
flag.Parse()
config.tags = strings.Split(tagss, ",")
config.targets = []string{target}
if stat, err := os.Stat(target); err == nil && stat.IsDir() {
config.targets, _ = listDir(target)
}
config.Targets()
return config
}
func (config config) Targets() []string {
result, err := config.targets()
if err != nil {
panic(err)
}
return result
}
func (config config) targets() ([]string, error) {
patterns := []string{config.target, fmt.Sprintf("%s.*", config.target)}
if stat, err := os.Stat(config.target); err == nil && stat.IsDir() {
patterns = []string{fmt.Sprintf("%s/*", config.target)}
}
result := make([]string, 0, 1)
for _, pattern := range patterns {
results, err := filepath.Glob(pattern)
if err != nil {
return nil, err
}
result = append(result, results...)
}
if len(result) == 0 {
return []string{config.target}, nil
}
return result, nil
}