diff --git a/cmd/pttodo-cli/cli.go b/cmd/pttodo-cli/cli.go index 6771f94..e006685 100644 --- a/cmd/pttodo-cli/cli.go +++ b/cmd/pttodo-cli/cli.go @@ -167,7 +167,18 @@ func edit(dry bool, filepaths []string) error { return err } original := originals[target] + + newTodoIDs := map[string]struct{}{} + for i := range newTodos { + newTodoIDs[newTodos[i].ID()] = struct{}{} + } + for i := range original.Todo { + if _, ok := newTodoIDs[original.Todo[i].ID()]; !ok { + original.Done = append(original.Done, original.Todo[i]) + } + } original.Todo = newTodos + original.AutoMove() c, err := yaml.Marshal(original) if err != nil { diff --git a/cmd/pttodo-cli/pttodo-cli b/cmd/pttodo-cli/pttodo-cli deleted file mode 100755 index a02e6a8..0000000 Binary files a/cmd/pttodo-cli/pttodo-cli and /dev/null differ diff --git a/cmd/pttodo-cli/testdata/test.yaml b/cmd/pttodo-cli/testdata/test.yaml index f5aa0e0..9770954 100755 --- a/cmd/pttodo-cli/testdata/test.yaml +++ b/cmd/pttodo-cli/testdata/test.yaml @@ -1,7 +1,5 @@ todo: -- a - b -- a scheduled: - todo: abc schedule: "2022-05-01" @@ -9,4 +7,14 @@ scheduled: - todo: def schedule: "2022-05-01" ts: Wed Mar 23 08:04:05 MDT 2022 -done: [] +done: +- todo: other + ts: Wed Mar 23 09:44:57 MDT 2022 +- todo: b + ts: Wed Mar 23 09:45:13 MDT 2022 +- todo: a + ts: Wed Mar 23 09:45:15 MDT 2022 +- todo: a + ts: Wed Mar 23 09:45:24 MDT 2022 +- todo: a + ts: Wed Mar 23 09:45:31 MDT 2022