Skip to main content

Simple CLI tool to plan your work

Project description

GitDo

CI codecov PyPI version

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

Installation

pip install gitdo

Usage

$ 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

# 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 for dependency management.

  1. Install uv:

    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  2. Clone the repository:

    git clone https://github.com/yourusername/gitdo.git
    cd gitdo
    
  3. Install dependencies:

    uv sync --extra dev
    

Running Tests

# 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:

# 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:

# 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

Manual Build (Testing)

# Build the package locally
uv build

# Check the built package
ls -la dist/

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gitdo-0.2.2.tar.gz (25.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gitdo-0.2.2-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file gitdo-0.2.2.tar.gz.

File metadata

  • Download URL: gitdo-0.2.2.tar.gz
  • Upload date:
  • Size: 25.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gitdo-0.2.2.tar.gz
Algorithm Hash digest
SHA256 2984060d4caac4efaa4613a73b6b280b5e766889a5f0dd48147a55caaa41af01
MD5 79d618eba542ccc3883188125627c0cb
BLAKE2b-256 d27cbd709c15c57c0d14218eb97e12965d6b8af84e7f87ad9ebbd80b2bc09865

See more details on using hashes here.

Provenance

The following attestation bundles were made for gitdo-0.2.2.tar.gz:

Publisher: publish.yml on s0b0lev/gitdo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gitdo-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: gitdo-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gitdo-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 983f03379281a2fe710917d64c24924443c8182b6c1e0a932c087e5fb13643da
MD5 4baa60c661ffd2f62ad0340cc8ab86df
BLAKE2b-256 23b234ca3eebfdb936dc9f8a2024a911bec92978630c0a1ee1669d0b2e441571

See more details on using hashes here.

Provenance

The following attestation bundles were made for gitdo-0.2.2-py3-none-any.whl:

Publisher: publish.yml on s0b0lev/gitdo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page