# unc CLI extensions system `unc CLI` is built to scale. The number of possible features is endless. Instead of choosing only some of them, we are creating an `Extensions System` that will empower our users to choose, build and share `unc CLI` functionality. ## How it works Extensibility is achieved by translating a `unc CLI` invocation of the form `unc (?[^ ]+)` into an invocation of an external tool `unc-cli-${command}` that then needs to be present in one of the user's `$PATH` directories. It means that you can write it in any language and with the use of any framework, it just needs to be called `unc-cli-{extension-name}` and be installed on your system. This approach is inspired by [Cargo](https://github.com/rust-lang/cargo). ## How to build an extension As mentioned above, any binary can become an extension, but we are encouraging developers to use [Rust](https://www.rust-lang.org/), [Clap](https://docs.rs/clap/2.33.0/clap/), and a set of libraries developed by unc. Here is some of them: - `unc-cli-builder` - CLI specific helpers to make your life easier and follow the standards of `unc CLI` at the same time (NOTE: Under development) - `unc-api-rs` - Rust library to interact with accounts and smart contracts on unc. (NOTE: Under development) - [unc-jsonrpc-client-rs](https://github.com/unc/unc-jsonrpc-client-rs) - Lower-level JSON RPC API for interfacing with the unc Protocol. ## Example Core `unc CLI` does not have validator specific functionality, but we can add it as a simple bash script: `unc-cli-pledging-pool-info` ```bash #!/bin/sh POOL_ID=$1 unc execute view-method network mainnet contract "name.unc" call "get_fields_by_pool" '{"pool_id": "'"$POOL_ID"'"}' at-final-block ``` Make sure that this script is in your `$PATH` and has proper permissions to be executed. Then call it like this: ```bash $ unc pledging-pool-info aurora.unc { "country": "Gibraltar", "country_code": "gi", "github": "auroraisunc", "twitter": "auroraisunc", "telegram": "auroraisunc", "url": "https://aurora.dev/", "city": "Gibraltar", "description": "Aurora validator fees are spent on supporting the Rainbow Bridge infrastructure, keeping the bridge free and accessible to everyone (except for the gas fees).", "logo": "https://aurora.dev/static/favicon-32x32.png", "name": "Aurora" } ```