ardunno-cli
Version:
nice-grpc API for the Arduino CLI
88 lines (61 loc) • 2.11 kB
Markdown
[`nice-grpc`](https://github.com/deeplay-io/nice-grpc) API for the [Arduino CLI](https://github.com/arduino/arduino-cli).
The CLI API code in this repository is generated from the [`.proto` files](https://github.com/arduino/arduino-cli/tree/master/rpc) of the Arduino CLI. The API is compatible with [Arduino CLI `v1.1.1`](https://github.com/arduino/arduino-cli/releases/tag/v1.1.1). This project uses [`ardunno-cli-gen`](https://github.com/dankeboy36/ardunno-cli-gen/) for the API generation.
```
npm i ardunno-cli --save
```
```ts
import { createChannel, createClient } from 'nice-grpc';
import { ArduinoCoreServiceDefinition } from 'ardunno-cli';
```
```js
const { createChannel, createClient } = require('nice-grpc');
const { ArduinoCoreServiceDefinition } = require('ardunno-cli');
```
Requires a running Arduino CLI daemon to connect to.
```sh
% ./arduino-cli daemon --port 50051 --format json
{
"IP": "127.0.0.1",
"Port": "50051"
}
```
```ts
const channel = createChannel('localhost:50051');
const client = createClient(ArduinoCoreServiceDefinition, channel);
```
Creates a new Arduino Core instance.
```ts
const { instance } = await client.create({});
```
Initializes an existing Arduino Core instance by loading platforms and libraries.
```ts
for await (const { message } of client.init({ instance })) {
switch (message.$case) {
case 'error':
throw new Error(message.error);
}
}
```
```ts
const { searchOutput } = await client.platformSearch({
instance,
searchArgs: 'SAMD',
});
searchOutput.forEach(({ id, latest }) => console.log(`${id}@${latest}`));
// arduino:samd@1.8.13
// Arrow:samd@2.1.0
// industruino:samd@1.0.1
```
The API contains typing and a JSON schema for the [Arduino CLI configuration](https://arduino.github.io/arduino-cli/latest/configuration/).
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.