Command line tool for building Arduino firmware using Node.js and Npm.

Arduino Command Line Build Tool

Command build tool for Arduino development built using Node.js. Allows installing library dependencies using the wonderful package manager Npm.

Inspiration taken from the Ino project.

$ npm install -g leo

Create a new example Blink project

$ leo new Blink

Move into project directory

$ cd Blink

Build hex file

$ leo build -b yun

$ leo build -b uno

Upload hex file

$ leo upload -b uno -p /dev/tty.usbmodem1141

Open a serial console

$ leo console -p /dev/tty.usbmodem1141 -b 9600

Search for supported libraries

$ leo search wifi

Example shows how you can install dependencies using npm. All modules provided by Arduino are added to npm as {module}.ino for instance wifi.ino is added to the Blink project. Note: Wifi.ino depends on SPI.ino which is automatically resolved.

$ leo new Blink
$ cd Blink
$ npm install wifi.ino --save
$ leo build -b uno

You can use the leo search command to search npm:

$ leo search arduino
NAME     DESCRIPTION                                                 AUTHOR       DATE       VERSIO
spi.ino  Spi library for Arduino. Packaged for the leo build system. =adammagaluk 2014-05-08 0.0.1
wifi.ino Libary for the Arduino WiFi shield. Packaged for the leo…   =adammagaluk 2014-05-08 0.1.2

leo search just filters npm search by packages ending in .ino.

$ leo -h
  Usage: leo [options] [command]
    boards                 List boards available.
    build [options]        Build firmware for the project in the current directory.
    config [options]       Modify leo configuration
    console [options]      Open a serial console to the board for debugging.
    new <folder>           Create a new example project
    preproc [options] <sketch> Compile sketch to valid c++ source
    search                 Search for supported libraries.
    upload [options]       Upload firmware to device.
    -h, --help             output usage information
    -V, --version          output the version number
    -v, --verbose [value]  Verbose level