Add ability to list all tasks along with line number. Add ability to delete task based on line number.
This commit is contained in:
82
godo.go
82
godo.go
@@ -4,6 +4,7 @@ import (
|
||||
"encoding/csv"
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -12,20 +13,29 @@ func main() {
|
||||
fmt.Println("Use godo ? or help for the help menu")
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
switch args[1] {
|
||||
case "?", "help":
|
||||
help()
|
||||
case "a", "add":
|
||||
add(args[2])
|
||||
case "l", "list":
|
||||
list()
|
||||
case "d", "delete":
|
||||
delete(args[2])
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// List all available commands
|
||||
func help() {
|
||||
fmt.Println("?/help - help menu")
|
||||
fmt.Println("a/add - add new task")
|
||||
fmt.Println("l/list - add new task")
|
||||
fmt.Println("a/add - add new task. Must be in quotations")
|
||||
fmt.Println("d/delete - delete task")
|
||||
fmt.Println("l/list - list all tasks")
|
||||
}
|
||||
|
||||
// Add new task
|
||||
func add(task string) {
|
||||
file, err := os.OpenFile("tasks.csv", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
|
||||
if err != nil {
|
||||
@@ -40,3 +50,71 @@ func add(task string) {
|
||||
taskWrite = append(taskWrite, task)
|
||||
writer.Write(taskWrite)
|
||||
}
|
||||
|
||||
// List all current tasks
|
||||
func list() {
|
||||
file, err := os.Open("tasks.csv")
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %v", err)
|
||||
}
|
||||
|
||||
defer file.Close()
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %v", err)
|
||||
}
|
||||
|
||||
reader := csv.NewReader(file)
|
||||
records, err := reader.ReadAll()
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %v", err)
|
||||
}
|
||||
x := 1
|
||||
for _, record := range records {
|
||||
|
||||
fmt.Printf("%x - %s\n", x, record[0])
|
||||
x += 1
|
||||
}
|
||||
}
|
||||
|
||||
// Delete the requested task
|
||||
func delete(task string) {
|
||||
|
||||
fileName := "tasks.csv"
|
||||
|
||||
// Convert arg to int
|
||||
taskInt, err := strconv.Atoi(task)
|
||||
if err != nil {
|
||||
fmt.Println("error")
|
||||
}
|
||||
|
||||
//open the task csv
|
||||
file, err := os.Open(fileName)
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %v", err)
|
||||
}
|
||||
|
||||
defer file.Close()
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %v", err)
|
||||
}
|
||||
//read the file
|
||||
reader := csv.NewReader(file)
|
||||
records, err := reader.ReadAll()
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %v", err)
|
||||
}
|
||||
//close file and delete
|
||||
file.Close()
|
||||
os.Remove(fileName)
|
||||
//check if the arg number is equal to the csv line number. If not pass it to the add function to readd it
|
||||
x := 1
|
||||
for _, record := range records {
|
||||
if x != taskInt {
|
||||
add(record[0])
|
||||
}
|
||||
x += 1
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user