2025-08-17 22:04:32 -04:00
2025-08-07 16:51:08 -04:00
2025-08-17 22:04:32 -04:00

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

Description
Simple to do task manager written in bash.
Readme MIT 54 KiB
Languages
Shell 100%