Skip to main content

Arduino tooling hooks for use with the pre-commit framework.

Project description

NullTek Documentation Arduino Hooks

PyPI - Python Version PyPI - Release Version Format Tests License

This project provides pre-commit hooks for arduino command line tooling. This is an un-official project.

Currently, this includes:

  • arduino-lint - Linter for checking arduino projects for problems and conformance to conventions.
  • arduino-cli - Limited to compile calls for verifying arduino code can be compiled.

This project uses CliPy-Hooks, to handle most of the cross-platform, sub-process nastiness.


Getting Started

To configure pre-commit see their official docs for instructions.

To use any of the arduino hooks below you must have the respective executables installed and on path. If you are running in an environment where putting this on path is difficult, you may pass an --install-dir argument to define the absolute path to the arduino executable.

The hooked tools do not work with individual source files as is done with most pre-commit hooks, as these tools work against complete arduino projects. By default, the hooks will treat the root directory as the project root, as is typical in arduino repositories. In cases where this is not true, you can pass a --project-dir argument with the project root path to the hook.

Due to limitations in argparse, it is highly suggested that you pass all arguments with values using --key=value rather than --key value.

Arduino Lint

Sample .pre-commit-config.yaml:

-   repo: https://github.com/creatingnull/arduino-hooks
    rev: v0.2.0
    hooks:
    -   id: arduino-lint

You can find instructions on how to install arduino-lint and pre-compiled binaries in the official docs.

For convenience this hook recognises the following arguments:

  • --fail-on-warn flag that will fail on any warning returned by arduino lint. Similar result to compliance=strict but even stricter.

You also may pass in supported arduino-cli arguments which will be handed through to the executable.

-   repo: https://github.com/creatingnull/arduino-hooks
    rev: v0.2.0
    hooks:
    -   id: arduino-lint
    -   args: ["--install-dir=/opt/arduino/", "--fail-on-warn", "--project-dir=src/"]

Arduino CLI

Sample .pre-commit-config.yaml:

-   repo: https://github.com/creatingnull/arduino-hooks
    rev: v0.2.0
    hooks:
    -   id: arduino-cli
        args: ["--fqbn=arduino:avr:nano"]

You can find instructions on how to install arduino-cli and pre-compiled binaries in the official docs

Must provide the full qualified board name for the target microcontroller, this parameter should be passed in "" quotes due to yaml restrictions on : use. You'll also need to have previously installed the core for this target and any libs required by your project.


As a Github Action

You can add these hooks to your existing pre-commit workflow by adding a step to install the required dependencies.

See the following example step added to a ubuntu-latest pre-commit workflow:

- name: Install Dependancies
  run: |
    curl -fsSL https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/install.sh | sh
    curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
    bin/arduino-cli core install arduino:avr
    bin/arduino-cli lib install NullPacketComms
    echo "${PWD}/bin/" >> $GITHUB_PATH

The process followed is to:

  1. Install arduino-cli if used
  2. Install arduino-lint if used
  3. Install required cores for the arduino-cli hook(s)
  4. Install required 3rd party libs for the arduino-cli hook(s)
  5. Put arduino tooling on path

For more information you can check out this project implementing these hooks in a github workflow.


Donations

I just do this stuff for fun in my spare time, but feel free to:

Support via buymeacoffee


License

The source of this repo uses the MIT open-source license, for details on the current licensing see LICENSE or click the badge above.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arduino_hooks-0.3.0.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

arduino_hooks-0.3.0-py2.py3-none-any.whl (6.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file arduino_hooks-0.3.0.tar.gz.

File metadata

  • Download URL: arduino_hooks-0.3.0.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for arduino_hooks-0.3.0.tar.gz
Algorithm Hash digest
SHA256 a68cbfb5496e7f83788f172d14c74cddb1807c57ddd2386f61f4de42f3848283
MD5 f67ec97287ead79a4985b8ebca9ea0be
BLAKE2b-256 868bf46238bb9f5860eed322ef86f37e7fb054649ddc76b1243a9fd5fbc554e9

See more details on using hashes here.

File details

Details for the file arduino_hooks-0.3.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for arduino_hooks-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 65c9668625ba798384fba840544460a46338e453e0e48446895e7dcad3d60cfb
MD5 dc7024e743d23c338945f4f09629917c
BLAKE2b-256 b66b0aa22eac690a74fe864209ad8261e5e2db92bdc77dc4a0d0917a873d8fc3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page