accept -archive to push -f Done into -archive Done
This commit is contained in:
56
cmd/main.go
56
cmd/main.go
@@ -30,6 +30,8 @@ func _main() error {
|
||||
|
||||
if config.target2 != "" {
|
||||
return merge(&config)
|
||||
} else if config.archive != "" {
|
||||
return archive(&config)
|
||||
} else {
|
||||
if err := add(&config); err != nil {
|
||||
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 {
|
||||
if config.target2 == "" {
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user