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) }