func main()

in datastore/tasks/tasks.go [30:109]


func main() {
	projID := os.Getenv("DATASTORE_PROJECT_ID")
	if projID == "" {
		log.Fatal(`You need to set the environment variable "DATASTORE_PROJECT_ID"`)
	}
	client, err := createClient(projID)
	if err != nil {
		log.Fatalf("Could not create datastore client: %v", err)
	}
	defer client.Close()

	// Print welcome message.
	fmt.Println("Cloud Datastore Task List")
	fmt.Println()
	usage()

	// Read commands from stdin.
	scanner := bufio.NewScanner(os.Stdin)
	fmt.Print("> ")

	for scanner.Scan() {
		cmd, args, n := parseCmd(scanner.Text())
		switch cmd {
		case "new":
			if args == "" {
				log.Printf("Missing description in %q command", cmd)
				usage()
				break
			}
			key, err := AddTask(projID, args)
			if err != nil {
				log.Printf("Failed to create task: %v", err)
				break
			}
			fmt.Printf("Created new task with ID %d\n", key.ID)

		case "done":
			if n == 0 {
				log.Printf("Missing numerical task ID in %q command", cmd)
				usage()
				break
			}
			if err := MarkDone(projID, n); err != nil {
				log.Printf("Failed to mark task done: %v", err)
				break
			}
			fmt.Printf("Task %d marked done\n", n)

		case "list":
			tasks, err := ListTasks(projID)
			if err != nil {
				log.Printf("Failed to fetch task list: %v", err)
				break
			}
			PrintTasks(os.Stdout, tasks)

		case "delete":
			if n == 0 {
				log.Printf("Missing numerical task ID in %q command", cmd)
				usage()
				break
			}
			if err := DeleteTask(projID, n); err != nil {
				log.Printf("Failed to delete task: %v", err)
				break
			}
			fmt.Printf("Task %d deleted\n", n)

		default:
			log.Printf("Unknown command %q", cmd)
			usage()
		}

		fmt.Print("> ")
	}

	if err := scanner.Err(); err != nil {
		log.Fatalf("Failed reading stdin: %v", err)
	}
}