You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 0.35/integration-options/index.html
+11-11Lines changed: 11 additions & 11 deletions
Original file line number
Diff line number
Diff line change
@@ -1470,8 +1470,8 @@ <h1 id="the-three-pillars-of-the-arduino-cli">The three pillars of the Arduino C
1470
1470
compile, verify and upload sketches to Arduino boards and that’s capable of managing all the software and tools needed
1471
1471
in the process. But don’t get fooled by its name: Arduino CLI can do much more than the average console application, as
1472
1472
shown by <ahref="https://github.com/arduino/arduino-ide">Arduino IDE 2.x</a> and <ahref="https://cloud.arduino.cc/home">Arduino Cloud</a>, which rely on it for similar purposes but each one in a
1473
-
completely different way from the other. In this article we introduce the three pillars of the Arduino CLI, explaining
1474
-
how we designed the software so that it can be effectively leveraged under different scenarios.</p>
1473
+
completely different way from the other. In this article we introduce the three pillars of the Arduino CLI, explaining how
1474
+
we designed the software so that it can be effectively leveraged under different scenarios.</p>
1475
1475
<h2id="the-first-pillar-command-line-interface">The first pillar: command line interface<aclass="headerlink" href="#the-first-pillar-command-line-interface" title="Permanent link">¶</a></h2>
1476
1476
<h3id="console-applications-for-humans">Console applications for humans<aclass="headerlink" href="#console-applications-for-humans" title="Permanent link">¶</a></h3>
1477
1477
<p>As you might expect, the first way to use the Arduino CLI is from a terminal and by a human, and user experience plays a
@@ -1495,15 +1495,14 @@ <h3 id="console-applications-for-robots">Console applications for robots<a class
<p>Even if not related to software design, one last feature that’s worth mentioning is the availability of a one-line
1498
-
<ahref="../installation/#use-the-install-script">installation script</a> that can be used to make the latest version of the Arduino CLI available on most systems with an
1499
-
HTTP client like curl or wget and a shell like bash.</p>
1498
+
<ahref="../installation/#use-the-install-script">installation script</a> that can be used to make the latest version of the Arduino CLI available on most systems with an HTTP
1499
+
client like curl or wget and a shell like bash.</p>
1500
1500
<p>For more information on Arduino CLI's command line interface, see the <ahref="../commands/arduino-cli/">command reference</a>.</p>
1501
1501
<h2id="the-second-pillar-grpc-interface">The second pillar: gRPC interface<aclass="headerlink" href="#the-second-pillar-grpc-interface" title="Permanent link">¶</a></h2>
1502
1502
<p><ahref="https://grpc.io/">gRPC</a> is a high performance <ahref="https://en.wikipedia.org/wiki/Remote_procedure_call">RPC</a> framework that can efficiently connect client and server applications. The Arduino
1503
-
CLI can act as a gRPC server (we call it <ahref="../commands/arduino-cli_daemon/">daemon mode</a>), exposing a set of procedures that implement the very same set
1504
-
of features of the command line interface and waiting for clients to connect and use them. To give an idea, the
1505
-
following is some <ahref="https://go.dev/">Golang</a> code capable of retrieving the version number of a remote running Arduino CLI server
1506
-
instance:</p>
1503
+
CLI can act as a gRPC server (we call it <ahref="../commands/arduino-cli_daemon/">daemon mode</a>), exposing a set of procedures that implement the very same set of
1504
+
features of the command line interface and waiting for clients to connect and use them. To give an idea, the following is
1505
+
some <ahref="https://go.dev/">Golang</a> code capable of retrieving the version number of a remote running Arduino CLI server instance:</p>
<p>gRPC is language agnostic: even if the example is written in Golang, the programming language used for the client can be
1509
1508
Python, JavaScript or any of the many <ahref="https://grpc.io/docs/languages/">supported ones</a>, leading to a variety of possible
@@ -1518,8 +1517,8 @@ <h2 id="the-third-pillar-embedding">The third pillar: embedding<a class="headerl
1518
1517
a common Golang API, a set of functions that abstract all the functionalities offered by the Arduino CLI, so that when
1519
1518
we provide a fix or a new feature, they are automatically available to both the command line and gRPC interfaces. The
1520
1519
source modules implementing this API can be imported in other Golang programs to embed a full-fledged Arduino CLI. For
1521
-
example, this is how some backend services powering <ahref="https://cloud.arduino.cc/home">Arduino Cloud</a> can compile sketches and manage libraries. Just to
1522
-
give you a taste of what it means to embed the Arduino CLI, here is how to search for a core using the API:</p>
1520
+
example, this is how some backend services powering <ahref="https://cloud.arduino.cc/home">Arduino Cloud</a> can compile sketches and manage libraries. Just to give
1521
+
you a taste of what it means to embed the Arduino CLI, here is how to search for a core using the API:</p>
<p>You can start playing with the Arduino CLI right away. The code is open source and <ahref="https://github.com/arduino/arduino-cli">the repo</a>
1529
1528
contains <ahref="https://github.com/arduino/arduino-cli/blob/master/client_example">example code showing how to implement a gRPC client</a>. If you’re curious about how we
1530
1529
designed the low level API, have a look at the <ahref="https://github.com/arduino/arduino-cli/tree/master/commands">commands package</a> and don’t hesitate to leave feedback on the <ahref="https://github.com/arduino/arduino-cli/issues">issue
1531
-
tracker</a> if you’ve got a use case that doesn’t fit one of the three pillars.</p>
1530
+
tracker</a>
1531
+
if you’ve got a use case that doesn’t fit one of the three pillars.</p>
0 commit comments