Metadata-Version: 2.3
Name: vumper
Version: 0.9.2
Summary: A compact, fully‑dynamic tool to inspect or bump the semantic version of any project that follows the uv‑package layout
Author: Anthony Camilo
Author-email: Anthony Camilo <1643025+gargolito@users.noreply.github.com>
Requires-Dist: tomlkit>=0.14.0
Requires-Python: >=3.11
Description-Content-Type: text/markdown

## vumper

A compact, fully‑dynamic tool to inspect or bump the semantic version of any
project that follows the uv‑package layout:

```
    repo_root/
        ├─ <project_name>/pyproject.toml
        ├─ <project_name>/src/<project_name>/__init__.py
        └─ (optional) <project_name>/frontend/
            ├─ package.json
            └─ package-lock.json
```
### Features:

* Automatic discovery of repo root and package name (no hard‑coded paths)
* Three logical components (backend, frontend, custom) – all auto‑detected
* `all` applies a get/set/bump action across every non-overlapping detected component
* Output labels default to `project.name`, with optional single-component `--label` overrides
* Bump `major`, `minor`, or `patch`; or set an explicit version
* `\--get` flag to simply display the current version(s)
* After a successful bump, runs `uv lock` to keep the lockfile up‑to‑date
* Robust error messages and clean code style (type hints, small helper
  functions, docstrings)

## Installation

`uv tool install vumper`

### Usage:

    # Show current backend version
    vumper backend --get

    # Show the current backend version with a custom display label
    vumper backend --get --label api

    # Show all detected non-overlapping component versions
    vumper all --get

    # Bump the minor part of the frontend version
    vumper frontend minor
    
    # Set an explicit version for the backend
    vumper backend --set 2.3.0

    # Bump the custom version surfaces discovered in the repo
    vumper custom

    # Set all detected non-overlapping components to a specific version
    vumper all --set 2.3.0

- - -
**What can vumper do?**

* **Dynamic repository detection** – it locates the nearest pyproject.toml and
  the corresponding package name automatically.
* **Auto‑detected components** – backend, frontend, and custom are built
  on‑the‑fly.
* **Whole-project actions** – `all` runs against every detected component without
  double-applying overlapping custom surfaces.
* **Project-aware labels** – output defaults to the detected `project.name`,
  while `--label` can rename a single selected component in command output.
* **Robust regex** – accepts both single and double quotes and keeps surrounding
  whitespace.
* **Package‑lock handling** – iterates over every package entry to keep versions
  in sync.
* **Optional **uv lock** sync** – executed after a successful bump, mirroring the
  original script’s behaviour.
* **Clear error messages** – explicit RuntimeError reports for missing files or
  invalid arguments.
* **Typings and docstrings** – improves readability and maintainability.
