Skip to content

Commit d89dd9a

Browse files
committed
Add help command, clear, done all, and improved task list UI
1 parent fefb171 commit d89dd9a

File tree

3 files changed

+82
-5
lines changed

3 files changed

+82
-5
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Built binaries
2+
task
3+
task-mac
4+
task-mac-intel
5+
task-linux
6+
task.exe

cmd/task/main.go

Lines changed: 57 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,43 @@ import (
77
"github.com/anikchand461/task/internal/task"
88
)
99

10+
func printHelp() {
11+
fmt.Println(`
12+
Task CLI 📝
13+
14+
Usage:
15+
task <command> [arguments]
16+
17+
Commands:
18+
add "task name" Add a new task
19+
list List all tasks
20+
done <id> Mark a task as done
21+
clear Delete all tasks
22+
help Show this help message
23+
done <id> Mark a task as done
24+
done all Mark all tasks as done
25+
26+
Examples:
27+
task add "Buy milk"
28+
task list
29+
task done 1
30+
task clear
31+
`)
32+
}
33+
34+
1035
func main() {
11-
if len(os.Args) < 2 {
12-
fmt.Println("Usage: task <command>")
13-
fmt.Println("Commands: add, list, done")
36+
if len(os.Args) < 2 ||
37+
os.Args[1] == "help" ||
38+
os.Args[1] == "-h" ||
39+
os.Args[1] == "--help" {
40+
41+
printHelp()
1442
return
1543
}
1644

1745
switch os.Args[1] {
46+
1847
case "add":
1948
if len(os.Args) < 3 {
2049
fmt.Println("Usage: task add <task>")
@@ -33,18 +62,42 @@ func main() {
3362
fmt.Println("Error:", err)
3463
}
3564

65+
66+
case "clear":
67+
err := task.Clear()
68+
if err != nil {
69+
fmt.Println("Error:", err)
70+
return
71+
}
72+
fmt.Println("All tasks deleted")
73+
3674
case "done":
3775
if len(os.Args) < 3 {
38-
fmt.Println("Usage: task done <id>")
76+
fmt.Println("Usage: task done <id | all>")
77+
return
78+
}
79+
80+
if os.Args[2] == "all" {
81+
err := task.DoneAll()
82+
if err != nil {
83+
fmt.Println("Error:", err)
84+
return
85+
}
86+
fmt.Println("All tasks marked as done")
3987
return
4088
}
89+
4190
err := task.Done(os.Args[2])
4291
if err != nil {
4392
fmt.Println("Error:", err)
93+
return
4494
}
95+
fmt.Println("Task marked as done")
96+
4597

4698
default:
4799
fmt.Println("Unknown command:", os.Args[1])
100+
printHelp()
48101
}
49102
}
50103

internal/task/list.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bufio"
55
"fmt"
66
"os"
7+
"strings"
78
)
89

910
func List() error {
@@ -12,6 +13,12 @@ func List() error {
1213
return err
1314
}
1415

16+
// If file doesn't exist → empty list
17+
if _, err := os.Stat(path); os.IsNotExist(err) {
18+
fmt.Println("No tasks found.")
19+
return nil
20+
}
21+
1522
f, err := os.Open(path)
1623
if err != nil {
1724
return err
@@ -21,9 +28,20 @@ func List() error {
2128
scanner := bufio.NewScanner(f)
2229
i := 1
2330
for scanner.Scan() {
24-
fmt.Println(i, scanner.Text())
31+
parts := strings.Split(scanner.Text(), "|")
32+
if len(parts) < 2 {
33+
continue
34+
}
35+
36+
status := "⭕️"
37+
if parts[1] == "done" {
38+
status = "✅"
39+
}
40+
41+
fmt.Printf("%d. %s %s\n", i, status, parts[0])
2542
i++
2643
}
44+
2745
return scanner.Err()
2846
}
2947

0 commit comments

Comments
 (0)