Simple CLI tool to plan your work
Project description
GitDo
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 projectadd <task>: Add a new task to your projectlist: List all tasks (use--allto show completed tasks)complete <task_id>: Mark a task as completedremove <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.
-
Install uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
-
Clone the repository:
git clone https://github.com/yourusername/gitdo.git cd gitdo
-
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:
- Update version in
pyproject.tomland__init__.py - Create a git commit
- Create a version tag (e.g.,
v0.2.0)
When you push the tag, GitHub Actions will:
- Extract version from the tag
- Build the package
- 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2984060d4caac4efaa4613a73b6b280b5e766889a5f0dd48147a55caaa41af01
|
|
| MD5 |
79d618eba542ccc3883188125627c0cb
|
|
| BLAKE2b-256 |
d27cbd709c15c57c0d14218eb97e12965d6b8af84e7f87ad9ebbd80b2bc09865
|
Provenance
The following attestation bundles were made for gitdo-0.2.2.tar.gz:
Publisher:
publish.yml on s0b0lev/gitdo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gitdo-0.2.2.tar.gz -
Subject digest:
2984060d4caac4efaa4613a73b6b280b5e766889a5f0dd48147a55caaa41af01 - Sigstore transparency entry: 662086734
- Sigstore integration time:
-
Permalink:
s0b0lev/gitdo@3fd5fa78fe2badad9ffe2814d2f5aa99f0be14f0 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/s0b0lev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3fd5fa78fe2badad9ffe2814d2f5aa99f0be14f0 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
983f03379281a2fe710917d64c24924443c8182b6c1e0a932c087e5fb13643da
|
|
| MD5 |
4baa60c661ffd2f62ad0340cc8ab86df
|
|
| BLAKE2b-256 |
23b234ca3eebfdb936dc9f8a2024a911bec92978630c0a1ee1669d0b2e441571
|
Provenance
The following attestation bundles were made for gitdo-0.2.2-py3-none-any.whl:
Publisher:
publish.yml on s0b0lev/gitdo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gitdo-0.2.2-py3-none-any.whl -
Subject digest:
983f03379281a2fe710917d64c24924443c8182b6c1e0a932c087e5fb13643da - Sigstore transparency entry: 662086736
- Sigstore integration time:
-
Permalink:
s0b0lev/gitdo@3fd5fa78fe2badad9ffe2814d2f5aa99f0be14f0 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/s0b0lev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3fd5fa78fe2badad9ffe2814d2f5aa99f0be14f0 -
Trigger Event:
push
-
Statement type: