go-task-cli

command module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2026 License: MIT Imports: 12 Imported by: 0

README

go-task-cli

A project-aware todo list that lives in one JSON file. Built with cobra, no database, no server, no account.

go build -o task-cli .
./task-cli add "Write the report" --project work --priority high --due 2026-12-01 --tag docs --tag urgent
./task-cli list
./task-cli done 1

The store is ~/.go-task-cli.json; set GO_TASK_CLI_FILE to point somewhere else (the tests rely on that to stay out of your home directory).

Commands

Command What it does
add <title> -p/--project, -P/--priority, -t/--tag (repeatable), --due YYYY-MM-DD, --desc
list (ls) filter with -p, -s/--status, -P, -t, -S/--search
done <id> marks the task done and records completed_at
progress <id> sets the status to in_progress
delete <id> removes the task
edit <id> change title/description/project/priority/due date
projects every project name in the store
search <query> title + description substring search
stats counts by status, priority and project
export / import <file> the whole store as JSON
csv-export <file> / csv-import <file> the task list as CSV
interactive (i) prompts for a new task, one field at a time

Priorities are low, medium, high, critical; statuses are todo, in_progress, done, blocked. parseStatus also accepts in-progress, wip, completed, and underscores or spaces.

CSV format

csv-export writes this header, and csv-import requires exactly this order:

id,title,description,project,priority,status,tags,created_at,due_date,completed_at
1,Buy groceries,Weekly shopping,home,medium,todo,shopping;personal,2026-08-09T10:00:00Z,2026-08-15T00:00:00Z,

Tags are separated by ; (a comma is already the field separator). Dates are RFC 3339; YYYY-MM-DD is accepted for due dates on import. IDs in the file are ignored — imported rows get fresh IDs so they never collide with the local store. Rows with an empty title are rejected instead of silently dropped.

Layout

main.go        cobra commands, TaskStore load/save, filtering, rendering
csv.go         CSV encode/decode + the csv-import / csv-export commands
main_test.go   store round-trip, parsers, filterTasks, command-level tests
csv_test.go    quoting, renumbering, bad headers, empty titles

Development

go test ./...      # no network, no home-directory writes
go vet ./...
gofmt -l .         # should print nothing

Licence

MIT — see LICENSE.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL