add anti tag search

This commit is contained in:
Bel LaPointe
2022-01-04 07:01:35 -05:00
parent 64868bdc0b
commit cf3b233a11
2 changed files with 9 additions and 3 deletions

View File

@@ -38,7 +38,7 @@ func _main() error {
filepath := flag.String("f", defaultFilepath, "($PTTODO_FILE) path to yaml file")
filepathToMergeIn := flag.String("g", "", "path to yaml file to merge into -f")
root := flag.String("root", DUMP_TODO, "path to pretty print ("+fmt.Sprint([]string{DUMP_ALL, DUMP_TODO, DUMP_SCHEDULED, DUMP_DONE})+")")
tags := flag.String("tags", "", "csv of all tags to find")
tags := flag.String("tags", "", "csv of all tags to find, -tag to invert")
search := flag.String("search", "", "fts case insensitive")
e := flag.Bool("e", false, "edit file")
dry := flag.Bool("dry", false, "dry run")
@@ -257,7 +257,10 @@ func dump(dry bool, writer io.Writer, filepath string, tags []string, search, ro
for _, todo := range todos {
want := len(todo.Tags) > 0
for _, tag := range tags {
want = want && strings.Contains(todo.Tags, tag)
positiveTag := strings.TrimLeft(tag, "-")
hasTag := strings.Contains(todo.Tags, positiveTag)
wantToHaveTag := !strings.HasPrefix(tag, "-")
want = want && (hasTag == wantToHaveTag)
}
if want {
result = append(result, todo)