I forgot to create a readme for this. Thanks for the assist Claud.

This commit is contained in:
Storm Dragon
2025-08-17 18:45:13 -04:00
parent c8745378c7
commit c436bd2ec0

230
README.md Normal file
View File

@@ -0,0 +1,230 @@
# 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://github.com/stormux/git-er-done.git
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 <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:
```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**: `<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](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