48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
type config struct {
|
|
targets []string
|
|
root string
|
|
tags []string
|
|
search string
|
|
edit bool
|
|
add string
|
|
addSchedule string
|
|
addTags string
|
|
}
|
|
|
|
func getConfig() config {
|
|
defaultFilepath := os.Getenv("PTTODO_FILE")
|
|
if defaultFilepath == "" {
|
|
defaultFilepath = "./todo.yaml"
|
|
}
|
|
|
|
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.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")
|
|
flag.StringVar(&config.search, "search", "", "fts case insensitive")
|
|
flag.BoolVar(&config.edit, "e", false, "edit file")
|
|
flag.StringVar(&config.add, "add", "", "todo to add")
|
|
flag.StringVar(&config.addSchedule, "add-schedule", "", "todo to add schedule")
|
|
flag.StringVar(&config.addTags, "add-tags", "", "todo to add csv tags")
|
|
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)
|
|
}
|
|
|
|
return config
|
|
}
|