From 942eddb28c8e5b1b9a5789e2e5e7c1f723dff17c Mon Sep 17 00:00:00 2001 From: Hiroaki Kobayashi Date: Mon, 17 Sep 2018 19:20:46 +0900 Subject: [PATCH] confirm when deleting labels --- cmd/todoist/cmd/label.go | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/cmd/todoist/cmd/label.go b/cmd/todoist/cmd/label.go index 01fca68..8bf6000 100644 --- a/cmd/todoist/cmd/label.go +++ b/cmd/todoist/cmd/label.go @@ -1,13 +1,14 @@ package cmd import ( - "fmt" - + "bufio" "context" "errors" + "fmt" "github.com/kobtea/go-todoist/cmd/util" "github.com/kobtea/go-todoist/todoist" "github.com/spf13/cobra" + "os" "strconv" "strings" ) @@ -138,6 +139,23 @@ var labelDeleteCmd = &cobra.Command{ return util.ProcessIDs( args, func(ids []todoist.ID) error { + var labels []todoist.Label + for _, id := range ids { + label := client.Label.Resolve(id) + if label == nil { + return fmt.Errorf("invalid id: %s", id) + } + labels = append(labels, *label) + } + fmt.Println(util.LabelTableString(labels)) + + reader := bufio.NewReader(os.Stdin) + fmt.Print("are you sure to delete above label(s)? (y/[n]): ") + ans, err := reader.ReadString('\n') + if ans != "y\n" || err != nil { + fmt.Println("abort") + return errors.New("abort") + } for _, id := range ids { if err := client.Label.Delete(id); err != nil { return err @@ -146,6 +164,9 @@ var labelDeleteCmd = &cobra.Command{ return nil }) }); err != nil { + if err.Error() == "abort" { + return nil + } return err } fmt.Println("Successful deleting of label(s).")