# SonicClient This is a rudimentary [Sonic](https://github.com/valeriansaliou/sonic) command-line client that I'm using to interact with a locally running service. ## Server You'll need a server running, to spin one up you can use the `docker-compose.yml` file in the `demo` directory, which pulls down the docker image from the docker hub. The required directory structure (`data/kv` and `data/fst`) is already in place, so to spin it up you only need to: ```sh $ docker-compose up -d; docker-compose logs -f ``` Press `^C` whenever you want to stop viewing the server's logs. ## Client To build the client you need a [Nim](https://nim-lang.org/) compiler for your target architecture; once it's available, along with the `nimble` tool; you can build the client with: ```sh $ # Build with a locally set up Nim compiler $ nimble build --verbose -d:release ``` and the binary will be left in the `./dist` directory. ## Use Once the client is build, run: ``` $ ./dist/sc --help ``` to display the commands and options required. ## Environment variables The file `_envrc` contains an `.envrc` template for your convenience; the client needs these three environment variables set up so it knows what server to interact with: * `SONIC_HOST` - hostname or IP address of Sonic server * `SONIC_PORT` - tcp port Sonic server is listening on * `SONIC_SECRET` - password to connect to the server You may use any method to set them up, and the `.envrc` method is just a convenience for all `direnv` users.