# 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: ```bash git clone https://git.stormux.org/storm/git-er-done cd git-er-done ``` 2. Make the script executable: ```bash chmod +x ged ``` 3. Copy to a directory in your PATH (optional): ```bash sudo cp ged /usr/local/bin/ ``` ## Quick Start ```bash # 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 ` | Mark task as done | | `ged -r "new_date"` | Reschedule a task | | `ged -x ` | 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: ```bash # 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: ```bash ged "Submit report" "2025-08-25" ged "Team meeting" "next tuesday" ged "Doctor appointment" "tomorrow" ``` ## Examples ### Basic Usage ```bash # 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 ```bash # 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 ```bash 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**: `.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` | | `` | Mark task as done | | `-f` | | `` | 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` | | ` ` | Reschedule task | | `-s` | `--stats` | None | Show task statistics | | `-x` | `--remove` | `` | Permanently delete task | ## Requirements - **Bash** 4.0 or later - **SQLite3** command-line tool - **GNU date** command (for date parsing) ## License MIT License - see [LICENSE](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