# 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).

## Building

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

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

## Releasing

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/