Files
git-er-done/README.md
2025-08-17 22:04:32 -04:00

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

  1. Clone the repository:

    git clone https://git.stormux.org/storm/git-er-done
    cd git-er-done
    
  2. Make the script executable:

    chmod +x ged
    
  3. 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