47 lines
848 B
Go
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
|
|
}
|