https://github.com/dankeboy36/ardunno-cli
nice-grpc API for the Arduino CLI
https://github.com/dankeboy36/ardunno-cli
arduino grpc nice-grpc typescript
Last synced: about 2 months ago
JSON representation
nice-grpc API for the Arduino CLI
- Host: GitHub
- URL: https://github.com/dankeboy36/ardunno-cli
- Owner: dankeboy36
- License: mit
- Created: 2022-09-20T16:00:44.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-12-12T13:30:52.000Z (over 1 year ago)
- Last Synced: 2025-04-10T00:02:20.925Z (12 months ago)
- Topics: arduino, grpc, nice-grpc, typescript
- Language: TypeScript
- Homepage:
- Size: 343 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## ardunno-cli
[`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 the Arduino CLI version pinned in [`arduino-cli.version`](arduino-cli.version). This project uses [`ardunno-cli-gen`](https://github.com/dankeboy36/ardunno-cli-gen/) for the API generation.
## Installing
```
npm i ardunno-cli --save
```
## Usage
### TypeScript:
```ts
import { createChannel, createClient } from 'nice-grpc'
import { ArduinoCoreServiceDefinition } from 'ardunno-cli'
```
### JavaScript:
```js
const { createChannel, createClient } = require('nice-grpc')
const { ArduinoCoreServiceDefinition } = require('ardunno-cli')
```
### Create a gRPC client:
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)
```
### Create:
Creates a new Arduino Core instance.
```ts
const { instance } = await client.create({})
```
### Initialize:
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)
}
}
```
### Search platforms:
```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
```
## Configuration
The API contains typing and a JSON schema for the [Arduino CLI configuration](https://arduino.github.io/arduino-cli/latest/configuration/).
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.