onerom-cli 0.3.0

Command line interface to manage One ROM - the most flexible retro ROM replacement
# One ROM CLI

This directory contains the source code and build scripts for the One ROM command-line interface (CLI) tool.

The CLI is a Rust application that provides a cross-platform CLI to manage One ROMs, including those with the USB plugin to provide management of One ROM while running (serving bytes).

For instructions on using the CLI, see [The CLI manual](/docs/CLI-MANUAL.md).

## Building

With the One ROM [build environment](/INSTALL.md) installed, from this directory:

```bash
cargo build --release
```

## Releasing

`onerom-cli` has two release channels:

- **The `onerom` binary** — cross-platform CLI artifacts distributed via
  https://onerom.org/cli and tagged `cli-vX.Y.Z`. Steps below.
- **The `onerom-cli` library crate** — published to crates.io as part of the
  main One ROM release (see [RELEASE.md]/RELEASE.md). Studio and other
  applications build on this library, so it is published consistently alongside
  its dependencies (`onerom-app`, `onerom-config`, `onerom-fw`, `onerom-gen`,
  `onerom-fw-parser`, `onerom-metadata`).

### Binary release

1. Build the release artifacts for all platforms:

    ```bash
    scripts/build-release.sh pin=WIN_SIGNING_PIN
    ```

    Artifacts are placed in the `dist/` directory.

2. Update the CLI release manifest and copy the artifacts to the One ROM images repo.  Assuming ../../../one-rom-images exists:

    ```bash
    scripts/release.py --input-dir dist --output-dir ../../../one-rom-images
    ```

3. Commit the changes to the one-rom-images repo and push:
    ```bash
    cd ../../../one-rom-images
    git add .
    git commit -m "Update One ROM CLI releases"
    git push
    ```

4. Tag the current commit with the version and push:

    ```bash
    git tag cli-vX.Y.Z
    git push origin cli-vX.Y.Z
    ```

5. Check new releases appear at https://onerom.org/cli/

6. Consider whether the [CLI Manual]/docs/CLI-MANUAL.md needs updating for the new release.