Files
pttodo/cmd/pttodo-cli/add.go
2023-11-06 10:33:32 -07:00

47 lines
848 B
Go

package main
import (
"io/ioutil"
"os"
"gogs.inhome.blapointe.com/bel/pttodo/pttodo"
"gopkg.in/yaml.v2"
)
func add(config config) error {
if config.add == "" {
return nil
}
v := pttodo.Todo{
Todo: config.add,
Schedule: pttodo.Schedule(config.addSchedule),
Tags: config.addTags,
}
return _add(config.targets, v)
}
func _add(filepaths []string, todo pttodo.Todo) error {
target := filepaths[0]
var original pttodo.Root
r, err := filePathReader(target)
if err != nil {
return err
}
if err := yaml.NewDecoder(r).Decode(&original); err != nil {
return err
}
original.Todo = append([]pttodo.Todo{todo}, original.Todo...)
original.AutoMove()
c, err := yaml.Marshal(original)
if err != nil {
return err
} else if err := ioutil.WriteFile(target, c, os.ModePerm); err != nil {
return err
}
return nil
}