Просмотр исходного кода

Allow arguments to the default command

I.e. `remind today` is equivalent to `remind list today` now.
Lucas Stadler лет назад: 9
Родитель
Сommit
67b8b7b2b0
1 измененных файлов с 26 добавлено и 19 удалено
  1. 26 19
      go/remind/remind.go

+ 26 - 19
go/remind/remind.go

26
26
27
func init() {
27
func init() {
28
	flag.BoolVar(&flags.showAll, "all", false, "Show all reminders")
28
	flag.BoolVar(&flags.showAll, "all", false, "Show all reminders")
29
30
func isCommand(s string) bool {
31
	return s == "list" || s == "l" || s == "add"
29
}
32
}
30
33
31
func main() {
34
func main() {
32
	flag.Parse()
35
	flag.Parse()
33
36
37
	start := 0
34
	cmd := "list"
38
	cmd := "list"
35
	if flag.NArg() >= 1 {
39
	if flag.NArg() >= 1 && isCommand(flag.Arg(0)) {
40
		start = 1
36
		cmd = flag.Arg(0)
41
		cmd = flag.Arg(0)
37
	}
42
	}
38
43
53
	}
58
	}
54
59
55
	switch cmd {
60
	switch cmd {
61
	case "add":
62
		if flag.NArg() != 3 {
63
			flag.Usage()
64
			os.Exit(1)
65
		}
66
67
		date, err := parseTime(flag.Arg(1))
68
		if err != nil {
69
			exit(err)
70
		}
71
		description := flag.Arg(2)
72
		reminders = append(reminders, Reminder{Date: date, Description: description})
73
		needWrite = true
56
	case "list", "l":
74
	case "list", "l":
75
		fallthrough
76
	default:
57
		min := time.Now()
77
		min := time.Now()
58
		max := min.AddDate(0, 0, 7)
78
		max := min.AddDate(0, 0, 7)
59
79
60
		if flag.NArg() > 1 {
61
			switch flag.Arg(1) {
80
		if flag.NArg() > start {
81
			switch flag.Arg(start) {
62
			case "today":
82
			case "today":
63
				min = truncateHours(time.Now())
83
				min = truncateHours(time.Now())
64
				max = min.Add(24 * time.Hour)
84
				max = min.Add(24 * time.Hour)
85
			default:
86
				fmt.Fprintf(os.Stderr, "unknown command '%s'\n", cmd)
87
				os.Exit(1)
65
			}
88
			}
66
		}
89
		}
67
90
71
				fmt.Printf("%s - %s\n", r.Date, r.Description)
94
				fmt.Printf("%s - %s\n", r.Date, r.Description)
72
			}
95
			}
73
		}
96
		}
74
	case "add":
75
		if flag.NArg() != 3 {
76
			flag.Usage()
77
			os.Exit(1)
78
		}
79
80
		date, err := parseTime(flag.Arg(1))
81
		if err != nil {
82
			exit(err)
83
		}
84
		description := flag.Arg(2)
85
		reminders = append(reminders, Reminder{Date: date, Description: description})
86
		needWrite = true
87
	default:
88
		fmt.Fprintf(os.Stderr, "unknown command '%s'\n", cmd)
89
		os.Exit(1)
90
	}
97
	}
91
98
92
	if needWrite {
99
	if needWrite {