knott 0.1.2

Fast Rust package manager helper for Arch Linux repos and the AUR
Documentation
# knott

knott is a fast Rust Arch Linux package helper for pacman repositories and the
AUR. It combines repo/AUR search, provider-aware AUR planning, and upfront
install menus.

## Current Features

- Pacman-like CLI defaults: `knott` runs `-Syu`, bare terms open a search menu.
- Combined repo/AUR search with AUR narrowing by the shortest term first.
- AUR RPC client with keep-alive, gzip, batching, request timeouts, and per-run caches.
- AUR package info, PKGBUILD printing, and PKGBUILD clone/update support.
- AUR install dry-run/planning with dependency graph ordering and provider lookup.
- Local pacman DB parser for installed markers and AUR update checks.
- Arch-like version comparison for local-vs-AUR upgrade detection.
- Numeric menu parser supporting `1 2`, `1-3`, `^4`, and package names.
- Release profile tuned for optimized binaries: LTO, one codegen unit, stripped binary.

## Installation

```sh
cargo install --path . --locked
knott --version
```

After `0.1.2` is published with the binary target included:

```sh
cargo install knott --locked
# or pin it explicitly:
cargo install knott --version 0.1.2 --locked
```

If plain `cargo install knott` still reports that `knott v0.1.0` has no binaries,
the registry index has not picked up the fixed release yet. Use the exact version
above or retry after the crates.io index updates.

## Build

```sh
cargo build --release
./target/release/knott --help
```

## Commands

```sh
knott                       # repo upgrade, then AUR upgrade
knott ripgrep               # interactive search/install
knott -Ss linux headers     # combined repo/AUR search
knott --aur -Ss shellcheck-bin  # AUR-only search
knott -S ripgrep            # install repo or AUR target
knott -Syu --needed         # refresh repos, upgrade, skip installed targets
knott --aur -S shellcheck-bin --dry-run --noconfirm
knott -Si shellcheck-bin    # package info
knott -G shellcheck-bin     # clone/update PKGBUILD
knott -Gp shellcheck-bin    # print PKGBUILD
knott -Qm                   # foreign packages
knott -Qua --aur            # AUR updates
knott --help                # command help
knott --version             # version
```

## Environment

- `KNOTT_AUR_URL`: AUR base URL, defaults to `https://aur.archlinux.org`.
- `KNOTT_BUILDDIR`: AUR build cache, defaults to `$XDG_CACHE_HOME/knott/build`.
- `KNOTT_PACMAN`: pacman executable, defaults to `pacman`.
- `KNOTT_MAKEPKG`: makepkg executable, defaults to `makepkg`.
- `KNOTT_GIT`: git executable, defaults to `git`.
- `KNOTT_SUDO`: privilege escalation command, defaults to `sudo`.

## Verification

```sh
cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo test
```

## Maintenance

- Bump the patch version for every project change, and keep `Cargo.toml`,
  `Cargo.lock`, and README install examples on the same version.
- Keep `README.md`, `knott --help` output in `src/cli.rs`, and CLI parser tests
  synced whenever commands or options change.
- Before publishing, verify the package and install path:

```sh
cargo package
cargo install --path . --locked --root /tmp/knott-install-check --force
/tmp/knott-install-check/bin/knott --version
/tmp/knott-install-check/bin/knott --help
```