accept -archive to push -f Done into -archive Done
parent
284b57b9c4
commit
1413d02764
|
|
@ -21,6 +21,7 @@ type config struct {
|
||||||
addSchedule string
|
addSchedule string
|
||||||
addTags string
|
addTags string
|
||||||
dryRun bool
|
dryRun bool
|
||||||
|
archive string
|
||||||
}
|
}
|
||||||
|
|
||||||
func getConfig() config {
|
func getConfig() config {
|
||||||
|
|
@ -32,6 +33,7 @@ func getConfig() config {
|
||||||
var config config
|
var config config
|
||||||
flag.StringVar(&config.target, "f", defaultFilepath, "($PTTODO_FILE) path to yaml file or dir (starting with root then alphabetical for dir)")
|
flag.StringVar(&config.target, "f", defaultFilepath, "($PTTODO_FILE) path to yaml file or dir (starting with root then alphabetical for dir)")
|
||||||
flag.StringVar(&config.target2, "g", "", "path to yaml file to merge into root of -f")
|
flag.StringVar(&config.target2, "g", "", "path to yaml file to merge into root of -f")
|
||||||
|
flag.StringVar(&config.archive, "archive", "", "path to yaml file to migrate done")
|
||||||
flag.StringVar(&config.root, "root", DUMP_TODO, "path to pretty print ("+fmt.Sprint([]string{DUMP_ALL, DUMP_TODO, DUMP_SCHEDULED, DUMP_DONE})+")")
|
flag.StringVar(&config.root, "root", DUMP_TODO, "path to pretty print ("+fmt.Sprint([]string{DUMP_ALL, DUMP_TODO, DUMP_SCHEDULED, DUMP_DONE})+")")
|
||||||
var tagss string
|
var tagss string
|
||||||
flag.StringVar(&tagss, "tags", "", "csv of all tags to find, -x to invert")
|
flag.StringVar(&tagss, "tags", "", "csv of all tags to find, -x to invert")
|
||||||
|
|
|
||||||
56
cmd/main.go
56
cmd/main.go
|
|
@ -30,6 +30,8 @@ func _main() error {
|
||||||
|
|
||||||
if config.target2 != "" {
|
if config.target2 != "" {
|
||||||
return merge(&config)
|
return merge(&config)
|
||||||
|
} else if config.archive != "" {
|
||||||
|
return archive(&config)
|
||||||
} else {
|
} else {
|
||||||
if err := add(&config); err != nil {
|
if err := add(&config); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
@ -41,6 +43,60 @@ func _main() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func archive(config *config) error {
|
||||||
|
if config.archive == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
baseReader, err := filePathReader(config.target)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
baseB, err := ioutil.ReadAll(baseReader)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
archiveReader, err := filePathReader(config.archive)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
archiveB, err := ioutil.ReadAll(archiveReader)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var base, archive pttodo.Root
|
||||||
|
if err := yaml.Unmarshal(baseB, &base); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := yaml.Unmarshal(archiveB, &archive); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
archive.Done = append(archive.Done, base.Done...)
|
||||||
|
if tmppath2, err := marshalRootToTempFile(archive); err != nil {
|
||||||
|
return err
|
||||||
|
} else if config.dryRun {
|
||||||
|
} else if err := rename(tmppath2, config.archive); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
base.Done = base.Done[:0]
|
||||||
|
if tmppath, err := marshalRootToTempFile(base); err != nil {
|
||||||
|
return err
|
||||||
|
} else if config.dryRun {
|
||||||
|
log.Println("===before===")
|
||||||
|
_dump(os.Stdout, []string{config.target}, config.tags, config.search, config.root)
|
||||||
|
log.Println("===after===")
|
||||||
|
_dump(os.Stdout, []string{tmppath}, config.tags, config.search, config.root)
|
||||||
|
} else if err := rename(tmppath, config.target); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func merge(config *config) error {
|
func merge(config *config) error {
|
||||||
if config.target2 == "" {
|
if config.target2 == "" {
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue