5.6 KiB
5.6 KiB
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