updt 0.1.27

Cross-platform update helper for npm, cargo, rustup, fnm, scoop, Homebrew, paru, flatpak, pacman, and pkg.
# updt


A cross-platform system update helper written in Rust.

`updt` checks upgrade candidates and lets you choose what to upgrade interactively.
It mirrors the behavior of the original script, but the workflow is implemented in Rust.

## Supported update targets


- Homebrew (macOS)
- npm global packages
- cargo installed crates (via `cargo-install-update`)
- rustup toolchains
- fnm managed Node.js versions (latest/LTS)
- scoop packages (Windows)
- paru AUR packages (Arch Linux)
- flatpak apps (Arch Linux profile)
- pacman packages (Arch Linux)
- pkg packages (Termux)

Windows support includes npm, cargo, rustup, fnm, and scoop.
Windows system package managers `winget` and `choco` are intentionally unsupported.

## System policy


`updt` enables targets by OS profile.

- macOS: Homebrew, npm, cargo, rustup
- Windows: npm, cargo, rustup, fnm, scoop
- Arch Linux: npm, cargo, rustup, fnm, paru, pacman, flatpak
- Termux: pkg, npm, cargo, fnm
- other systems: all targets disabled by policy

## Install


```bash
cargo install updt
```

## Run


```bash
updt
```

The program does 3 stages.

1. Check upgrade candidates.
2. Select targets to upgrade.
3. Run upgrades for selected targets.

Check stage runs in parallel across enabled targets for faster detection.

Default selection is TUI:

- `Up` / `Down`: move cursor
- `Space`: toggle selected target
- `Enter`: confirm selection
- `q` / `Esc`: quit selection

## CLI


Show version:

```bash
updt --version
```

Update only selected targets (skip interactive selector):

```bash
updt update npm
updt update npm,cargo
updt update npm cargo
```

Install fish completion script to `~/.config/fish/completions/updt.fish`:

```bash
updt fish
```

Available subcommands:

- `update`
- `fish`

## Notes


- `cargo` checks require `cargo-install-update` in `PATH`.
- `pacman` upgrade uses `sudo pacman -Syu`.
- Termux `pkg` checks use `apt list --upgradable`.
- `updt` calls existing package manager commands and forwards their output.