gitdo


Namegitdo JSON
Version 0.2.4 PyPI version JSON
download
home_pageNone
SummarySimple CLI tool to plan your work
upload_time2025-11-04 15:28:13
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseNone
keywords cli git planning productivity task
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # GitDo

[![CI](https://github.com/s0b0lev/gitdo/actions/workflows/ci.yml/badge.svg)](https://github.com/s0b0lev/gitdo/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/s0b0lev/gitdo/branch/main/graph/badge.svg)](https://codecov.io/gh/s0b0lev/gitdo)
[![PyPI version](https://badge.fury.io/py/gitdo.svg)](https://badge.fury.io/py/gitdo)

Simple CLI tool to plan your work. Tasks are stored locally in a `.gitdo/` folder.

## Installation

```bash
pip install gitdo
```

## Usage

```bash
$ gitdo [command] [options]
```

## Commands

- `init`: Initialize a new GitDo project
- `add <task>`: Add a new task to your project
- `list`: List all tasks (use `--all` to show completed tasks)
- `complete <task_id>`: Mark a task as completed
- `remove <task_id>`: Remove a task from your project

## Example

```bash
# Initialize GitDo in your project
$ gitdo init
✓ GitDo initialized successfully!

# Add some tasks
$ gitdo add "Implement user authentication"
✓ Added task: Implement user authentication
ID: a1b2c3d4

$ gitdo add "Write unit tests"
✓ Added task: Write unit tests
ID: e5f6g7h8

# List all pending tasks
$ gitdo list

# Complete a task (you can use just the first few characters of the ID)
$ gitdo complete a1b2

# List all tasks including completed ones
$ gitdo list --all

# Remove a task
$ gitdo remove e5f6
```

## Development

### Setup

This project uses [uv](https://docs.astral.sh/uv/) for dependency management.

1. Install uv:
   ```bash
   curl -LsSf https://astral.sh/uv/install.sh | sh
   ```

2. Clone the repository:
   ```bash
   git clone https://github.com/yourusername/gitdo.git
   cd gitdo
   ```

3. Install dependencies:
   ```bash
   uv sync --extra dev
   ```

### Running Tests

```bash
# Run all tests
uv run pytest

# Run with coverage
uv run pytest --cov=gitdo --cov-report=html

# Run specific test file
uv run pytest tests/test_cli.py

# Run tests in watch mode (requires pytest-watch)
uv run ptw
```

### Code Quality

This project uses Ruff for linting and formatting:

```bash
# Check code
uv run ruff check .

# Format code
uv run ruff format .

# Check and fix
uv run ruff check --fix .
```

### Project Structure

```
gitdo/
├── src/
│   └── gitdo/
│       ├── __init__.py
│       ├── cli.py          # CLI interface
│       ├── models.py       # Data models
│       └── storage.py      # Storage handling
├── tests/
│   ├── conftest.py         # Pytest fixtures
│   ├── test_cli.py         # CLI tests
│   ├── test_models.py      # Model tests
│   └── test_storage.py     # Storage tests
├── pyproject.toml          # Project configuration
└── README.md
```

### Releasing to PyPI

This project uses GitHub Actions for automated publishing to PyPI. Releases are triggered by pushing version tags.

#### Automated Release (Recommended)

Use the release script to create a new version:

```bash
# Create a new release (e.g., 0.2.0)
./scripts/release.sh 0.2.0

# Push to trigger the release
git push origin main --tags
```

The script will:
1. Update version in `pyproject.toml` and `__init__.py`
2. Create a git commit
3. Create a version tag (e.g., `v0.2.0`)

When you push the tag, GitHub Actions will:
1. Extract version from the tag
2. Build the package
3. Publish to PyPI using [Trusted Publishing](https://docs.pypi.org/trusted-publishers/)


#### Manual Build (Testing)

```bash
# Build the package locally
uv build

# Check the built package
ls -la dist/
```

## License

MIT
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "gitdo",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "cli, git, planning, productivity, task",
    "author": null,
    "author_email": "Your Name <your.email@example.com>",
    "download_url": "https://files.pythonhosted.org/packages/ed/4d/0171199e3c480757713e59443871e925016ec0ae534ef15cf871e96916b5/gitdo-0.2.4.tar.gz",
    "platform": null,
    "description": "# GitDo\n\n[![CI](https://github.com/s0b0lev/gitdo/actions/workflows/ci.yml/badge.svg)](https://github.com/s0b0lev/gitdo/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/s0b0lev/gitdo/branch/main/graph/badge.svg)](https://codecov.io/gh/s0b0lev/gitdo)\n[![PyPI version](https://badge.fury.io/py/gitdo.svg)](https://badge.fury.io/py/gitdo)\n\nSimple CLI tool to plan your work. Tasks are stored locally in a `.gitdo/` folder.\n\n## Installation\n\n```bash\npip install gitdo\n```\n\n## Usage\n\n```bash\n$ gitdo [command] [options]\n```\n\n## Commands\n\n- `init`: Initialize a new GitDo project\n- `add <task>`: Add a new task to your project\n- `list`: List all tasks (use `--all` to show completed tasks)\n- `complete <task_id>`: Mark a task as completed\n- `remove <task_id>`: Remove a task from your project\n\n## Example\n\n```bash\n# Initialize GitDo in your project\n$ gitdo init\n\u2713 GitDo initialized successfully!\n\n# Add some tasks\n$ gitdo add \"Implement user authentication\"\n\u2713 Added task: Implement user authentication\nID: a1b2c3d4\n\n$ gitdo add \"Write unit tests\"\n\u2713 Added task: Write unit tests\nID: e5f6g7h8\n\n# List all pending tasks\n$ gitdo list\n\n# Complete a task (you can use just the first few characters of the ID)\n$ gitdo complete a1b2\n\n# List all tasks including completed ones\n$ gitdo list --all\n\n# Remove a task\n$ gitdo remove e5f6\n```\n\n## Development\n\n### Setup\n\nThis project uses [uv](https://docs.astral.sh/uv/) for dependency management.\n\n1. Install uv:\n   ```bash\n   curl -LsSf https://astral.sh/uv/install.sh | sh\n   ```\n\n2. Clone the repository:\n   ```bash\n   git clone https://github.com/yourusername/gitdo.git\n   cd gitdo\n   ```\n\n3. Install dependencies:\n   ```bash\n   uv sync --extra dev\n   ```\n\n### Running Tests\n\n```bash\n# Run all tests\nuv run pytest\n\n# Run with coverage\nuv run pytest --cov=gitdo --cov-report=html\n\n# Run specific test file\nuv run pytest tests/test_cli.py\n\n# Run tests in watch mode (requires pytest-watch)\nuv run ptw\n```\n\n### Code Quality\n\nThis project uses Ruff for linting and formatting:\n\n```bash\n# Check code\nuv run ruff check .\n\n# Format code\nuv run ruff format .\n\n# Check and fix\nuv run ruff check --fix .\n```\n\n### Project Structure\n\n```\ngitdo/\n\u251c\u2500\u2500 src/\n\u2502   \u2514\u2500\u2500 gitdo/\n\u2502       \u251c\u2500\u2500 __init__.py\n\u2502       \u251c\u2500\u2500 cli.py          # CLI interface\n\u2502       \u251c\u2500\u2500 models.py       # Data models\n\u2502       \u2514\u2500\u2500 storage.py      # Storage handling\n\u251c\u2500\u2500 tests/\n\u2502   \u251c\u2500\u2500 conftest.py         # Pytest fixtures\n\u2502   \u251c\u2500\u2500 test_cli.py         # CLI tests\n\u2502   \u251c\u2500\u2500 test_models.py      # Model tests\n\u2502   \u2514\u2500\u2500 test_storage.py     # Storage tests\n\u251c\u2500\u2500 pyproject.toml          # Project configuration\n\u2514\u2500\u2500 README.md\n```\n\n### Releasing to PyPI\n\nThis project uses GitHub Actions for automated publishing to PyPI. Releases are triggered by pushing version tags.\n\n#### Automated Release (Recommended)\n\nUse the release script to create a new version:\n\n```bash\n# Create a new release (e.g., 0.2.0)\n./scripts/release.sh 0.2.0\n\n# Push to trigger the release\ngit push origin main --tags\n```\n\nThe script will:\n1. Update version in `pyproject.toml` and `__init__.py`\n2. Create a git commit\n3. Create a version tag (e.g., `v0.2.0`)\n\nWhen you push the tag, GitHub Actions will:\n1. Extract version from the tag\n2. Build the package\n3. Publish to PyPI using [Trusted Publishing](https://docs.pypi.org/trusted-publishers/)\n\n\n#### Manual Build (Testing)\n\n```bash\n# Build the package locally\nuv build\n\n# Check the built package\nls -la dist/\n```\n\n## License\n\nMIT",
    "bugtrack_url": null,
    "license": null,
    "summary": "Simple CLI tool to plan your work",
    "version": "0.2.4",
    "project_urls": {
        "Homepage": "https://github.com/s0b0lev/gitdo",
        "Repository": "https://github.com/s0b0lev/gitdo"
    },
    "split_keywords": [
        "cli",
        " git",
        " planning",
        " productivity",
        " task"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "76d9c88f5db9687cf6ae6a05f988c4b818c0086735e3144f106191d623e0abdc",
                "md5": "96304e2b3836d02d4eeaf9f2b974b889",
                "sha256": "e182db41e44723b8e016038b220735434dafcf0f3cbc0e73e3717353d971e91a"
            },
            "downloads": -1,
            "filename": "gitdo-0.2.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "96304e2b3836d02d4eeaf9f2b974b889",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 8990,
            "upload_time": "2025-11-04T15:28:11",
            "upload_time_iso_8601": "2025-11-04T15:28:11.612614Z",
            "url": "https://files.pythonhosted.org/packages/76/d9/c88f5db9687cf6ae6a05f988c4b818c0086735e3144f106191d623e0abdc/gitdo-0.2.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ed4d0171199e3c480757713e59443871e925016ec0ae534ef15cf871e96916b5",
                "md5": "23ddbeac63de6f51e1e5906378360d46",
                "sha256": "042ad3eea20a76fbe72758b339e5abbc6d7bd018b0f2da49f406e9ee38e89ad0"
            },
            "downloads": -1,
            "filename": "gitdo-0.2.4.tar.gz",
            "has_sig": false,
            "md5_digest": "23ddbeac63de6f51e1e5906378360d46",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 27732,
            "upload_time": "2025-11-04T15:28:13",
            "upload_time_iso_8601": "2025-11-04T15:28:13.039799Z",
            "url": "https://files.pythonhosted.org/packages/ed/4d/0171199e3c480757713e59443871e925016ec0ae534ef15cf871e96916b5/gitdo-0.2.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-11-04 15:28:13",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "s0b0lev",
    "github_project": "gitdo",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "gitdo"
}
        
Elapsed time: 2.50511s