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.1.tar.gz (22.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.1-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: gitdo-0.2.1.tar.gz
  • Upload date:
  • Size: 22.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.1.tar.gz
Algorithm Hash digest
SHA256 1de5cd6e5cb569368ba6be64de8f502a6cc35c5c3e332d91a9fbc76d15ed0ddd
MD5 4c05b8ca6c44850806cffdff51ace072
BLAKE2b-256 01579d67d33b0eb2f2b0b46c5d71ce1c71f4e087adf9a2e2cc91cf2b993d954f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gitdo-0.2.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: gitdo-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 6.9 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1f07ce5ea502e4053b7b558e055ef514cc74539f82286a4d7fb998d665f985d5
MD5 384de71d7897cc457724108b5c770f7b
BLAKE2b-256 002905d7da6d99debb6ff912464260ceff5e5c986713cd8c2901224c1a682c29

See more details on using hashes here.

Provenance

The following attestation bundles were made for gitdo-0.2.1-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