Git 'er Done
A simple, powerful command-line todo manager that stores tasks in SQLite databases. Perfect for developers and power users who want a lightweight task management solution that works entirely from the terminal.
Features
- Simple CLI interface - Add, list, and manage tasks with intuitive commands
- Natural language date parsing - Use dates like "tomorrow", "next friday", or "2025-08-20"
- Multiple task lists - Organize tasks across different projects or contexts
- SQLite storage - Reliable, portable database backend
- Task statistics - Track completion rates and overdue items
- Flexible scheduling - Reschedule tasks easily
- Data management - Purge old completed tasks to keep lists clean
Installation
-
Clone the repository:
git clone https://git.stormux.org/storm/git-er-done cd git-er-done
-
Make the script executable:
chmod +x ged
-
Copy to a directory in your PATH (optional):
sudo cp ged /usr/local/bin/
Quick Start
# Add a task
ged "Fix the login bug"
# Add a task with a due date
ged "Call dentist" tomorrow
# List all pending tasks
ged
# Mark task 1 as complete
ged -d 1
# Show help
ged -h
Usage
Basic Commands
Command | Description |
---|---|
ged |
List all pending tasks |
ged "task description" |
Add a new task |
ged "task description" "due_date" |
Add a task with due date |
ged -d <number> |
Mark task as done |
ged -r <number> "new_date" |
Reschedule a task |
ged -x <number> |
Permanently delete a task |
Task List Management
Command | Description |
---|---|
ged -l |
List pending tasks (same as no arguments) |
ged -a |
List all tasks with status |
ged -c |
List completed tasks only |
ged -s |
Show task statistics |
ged -L |
List all available task files |
Multiple Task Lists
Use the -f
flag to work with different task lists:
# Work tasks
ged -f work "Review pull requests"
ged -f work -l
# Personal tasks
ged -f personal "Buy groceries"
ged -f personal -s
# Project-specific tasks
ged -f project-alpha "Deploy to staging"
Data Management
Command | Description |
---|---|
ged -p |
Remove completed tasks older than 30 days |
ged -p 7 |
Remove completed tasks older than 7 days |
Date Formats
Git 'er Done accepts various date formats:
- ISO format:
2025-08-20
- Natural language:
tomorrow
,next monday
,next week
- Relative dates: Any format accepted by the
date
command
Examples:
ged "Submit report" "2025-08-25"
ged "Team meeting" "next tuesday"
ged "Doctor appointment" "tomorrow"
Examples
Basic Usage
# Add some tasks
ged "Fix bug in authentication module"
ged "Write unit tests" "friday"
ged "Deploy to production" "2025-08-30"
# List tasks
ged
# Output:
# Git 'er Done task list
# 1. Fix bug in authentication module
# 2. Write unit tests Due by Friday, August 22, 2025
# 3. Deploy to production Due by Saturday, August 30, 2025
# Mark first task complete
ged -d 1
# Output: Task 1 "Fix bug in authentication module" marked as done.
# Reschedule second task
ged -r 2 "next monday"
# Output: Task 2 "Write unit tests" rescheduled to Monday, August 25, 2025.
Multiple Projects
# Work tasks
ged -f work "Code review for PR #123"
ged -f work "Update documentation"
# Side project
ged -f sideproject "Implement user authentication"
ged -f sideproject "Set up CI/CD pipeline"
# Personal tasks
ged -f personal "Buy birthday gift"
ged -f personal "Schedule dentist appointment"
# List all task files
ged -L
# Output:
# Available task files:
# ====================
# personal 2 pending, 0 done, 2 total (<1 KB)
# sideproject 2 pending, 0 done, 2 total (<1 KB)
# tasks 0 pending, 1 done, 1 total (<1 KB) (default)
# work 2 pending, 0 done, 2 total (<1 KB)
Task Statistics
ged -s
# Output:
# Task Statistics:
# ==================
# Total tasks: 15
# Pending: 8
# Completed: 7
# Completion rate: 46.7%
# ⚠️ Overdue tasks: 2
# 📅 Due today: 1
Data Storage
Tasks are stored in SQLite databases in your system's data directory:
- Linux:
$HOME/.local/share/git-er-done/
- Default database:
tasks.db
- Custom databases:
<filename>.db
(when using-f
flag)
Each database contains a table with the following structure:
- Task ID (auto-incrementing)
- Description
- Due date (optional)
- Status (pending/completed)
- Creation timestamp
- Completion timestamp
- Project tag
Command Reference
Flags
Flag | Long Form | Arguments | Description |
---|---|---|---|
-a |
--all |
None | List all tasks with status |
-c |
--completed |
None | List completed tasks only |
-d |
<task_number> |
Mark task as done | |
-f |
<file_name> |
Use specified database file | |
-h |
--help |
None | Show help screen |
-l |
None | List pending tasks | |
-L |
--list |
None | List available task files |
-p |
--purge |
[days] |
Remove old completed tasks (default: 30 days) |
-r |
<task_number> <new_date> |
Reschedule task | |
-s |
--stats |
None | Show task statistics |
-x |
--remove |
<task_number> |
Permanently delete task |
Requirements
- Bash 4.0 or later
- SQLite3 command-line tool
- GNU date command (for date parsing)
License
MIT License - see LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
Author
Created by Stormux
Languages
Shell
100%