# Cargo-ledger Builds a Nano App and outputs a JSON manifest file that can be used by [ledgerctl](https://github.com/LedgerHQ/ledgerctl) to install an application directly. In order to build for Nano S, Nano X, and Nano S Plus, [custom target files](https://docs.rust-embedded.org/embedonomicon/custom-target.html) are used. They can be found at the root of the [Rust SDK](https://github.com/LedgerHQ/ledger-nanos-sdk/) and can be installed automatically with the command `setup`. ## Installation This program requires: - `arm-none-eabi-objcopy` - [`ledgerctl`](https://github.com/LedgerHQ/ledgerctl) Install this repo with: ``` cargo install --git https://github.com/LedgerHQ/ledger-device-rust-sdk cargo-ledger ``` or download it manually and install with: ``` cargo install --path cargo-ledger ``` Note that `cargo`'s dependency resolver may behave differently when installing, and you may end up with errors. In order to fix those and force usage of the versions specified in the tagged `Cargo.lock`, append `--locked` to the above commands. ## Usage General usage is displayed when invoking `cargo ledger`. ### Setup This will install custom target files from the SDK directly into your environment. ``` cargo ledger setup ``` ### Building ``` cargo ledger build nanos cargo ledger build nanox cargo ledger build nanosplus ``` Loading on device can optionally be performed by appending `--load` or `-l` to the command. By default, this program will attempt to build the current program with in `release` mode (full command: `cargo build --release --target=nanos --message-format=json`) Arguments can be passed to modify this behaviour after inserting a `--` like so: ``` cargo ledger build nanos --load -- --features one -Z unstable-options --out-dir ./output/ ```