45 lines
805 B
Go
45 lines
805 B
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
|
|
"gitea.inhome.blapointe.com/gogs/pttodo/pttodo"
|
|
"gopkg.in/yaml.v2"
|
|
)
|
|
|
|
func dump(config config) error {
|
|
return _dump(os.Stdout, config.Targets(), config.tags, config.search, config.root)
|
|
}
|
|
|
|
func _dump(writer io.Writer, filepaths []string, tags []string, search, rootDisplay string) error {
|
|
root, err := pttodo.NewRootFromFiles(filepaths...)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, x := range []*[]pttodo.Todo{
|
|
&root.Todo,
|
|
&root.Scheduled,
|
|
&root.Done,
|
|
} {
|
|
y := pttodo.Todos(*x)
|
|
y = y.LikeTags(tags)
|
|
y = y.LikeSearch(search)
|
|
*x = y
|
|
}
|
|
|
|
var v interface{} = root
|
|
switch rootDisplay {
|
|
case DUMP_TODO:
|
|
v = root.Todo
|
|
case DUMP_SCHEDULED:
|
|
v = root.Scheduled
|
|
case DUMP_DONE:
|
|
v = root.Done
|
|
default:
|
|
}
|
|
|
|
return yaml.NewEncoder(writer).Encode(v)
|
|
}
|