Skip to main content

Various programmer utilities

Project description

🛠️ Curu: Various Programming Utilities

Curu (Quenya “skill”, Sindarin “skill, craft, magic”) is a lightweight toolbox of Python helpers that simplify everyday programming. It currently provides these CLI tools:

Command What it does
check-git Recursively finds Git repos under a folder, shows uncommitted changes and non-pushed commits.
parse-nested Pretty-prints and colorizes nested/templated C++-like expressions (supports clipboard input).
icon-scale Generates multiple icon PNGs at standard sizes from a single source image using libvips/pyvips.

📦 Installation

Curu is available on PyPI and can be installed with pip, uv, or pipx:

pip install curu
# or
uv tool install curu
# or
pipx install curu

🚀 Usage

check-git

# Check a directory (recursively) for dirty Git repos and non-pushed commits
check-git path/to/folder

# Also update the default remote before checking
check-git --update-remote path/to/folder

Typical output:

/path/to/repo is dirty:
untracked: ['new_file.py']
unstaged: ['modified_file.py']
staged: ['staged_change.py']

/path/to/other_repo has non-pushed commits:
f3c2e1a Add new feature
...

parse-nested

# Format text passed as an argument
parse-nested "std::vector<std::pair<int, std::string>>"

# Format clipboard contents (no positional args → reads from clipboard)
parse-nested

# Limit maximum line width (default: 80)
parse-nested -w 100 "some very long templated type"

# Only print formatted output; do not overwrite clipboard
parse-nested -p

# Cut off nesting after a certain depth
parse-nested -d 3 "very deeply nested type..."

By default (no -p and no -d), when reading from the clipboard, it prints a colorized version to the terminal and copies a cleaned, uncolored version back to the clipboard.

icon-scale

# Generate multiple PNGs at standard sizes from one source image
icon-scale path/to/icon.png path/to/output/icon

# This writes files like:
#   path/to/output/icon-512.png
#   path/to/output/icon-384.png
#   ...
#   path/to/output/icon-48.png

The second argument is treated as a prefix: icon-scale src.png prefix creates prefix-512.png, prefix-384.png, etc.

📜 Licence

This library is licensed under the terms of the Mozilla Public Licence 2.0, provided in License.

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

curu-1.0.0.tar.gz (14.7 kB view details)

Uploaded Source

Built Distribution

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

curu-1.0.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file curu-1.0.0.tar.gz.

File metadata

  • Download URL: curu-1.0.0.tar.gz
  • Upload date:
  • Size: 14.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for curu-1.0.0.tar.gz
Algorithm Hash digest
SHA256 3b75293d887c825bd370385e390c6c604c80efd77dcf046c13b474f16641d5da
MD5 f9ff01688e7f874746bac160e554821d
BLAKE2b-256 f3a7c3378bbf9839aff49caf6c4dfd8619067259182ac2f0f2cb4cc6412419c9

See more details on using hashes here.

File details

Details for the file curu-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: curu-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 14.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for curu-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 22b869e641d098abde2353aa01d9450d5f08928a77c11b20e93417e5e0c5cf17
MD5 b70af12986a56fa5dd0f05aad6b69fb4
BLAKE2b-256 491d5b881ba9377d3718dc15443badebe4119efbf9b7b952b834d74aa546439f

See more details on using hashes here.

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