From 074a5476217dde5fc583798daf36b266b8c27d46 Mon Sep 17 00:00:00 2001 From: Jeckel Date: Thu, 8 Oct 2020 23:14:59 +0200 Subject: [PATCH] Install arduino IDE --- roles/arduino/defaults/main.yml | 7 +++- roles/arduino/tasks/main.yml | 43 +++++++++++++++++++++++ roles/arduino/templates/arduino-push.j2 | 18 ++++++++++ roles/arduino/templates/arduino-verify.j2 | 17 +++++++++ 4 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 roles/arduino/templates/arduino-push.j2 create mode 100644 roles/arduino/templates/arduino-verify.j2 diff --git a/roles/arduino/defaults/main.yml b/roles/arduino/defaults/main.yml index cac3ef9..dc353d3 100644 --- a/roles/arduino/defaults/main.yml +++ b/roles/arduino/defaults/main.yml @@ -1,4 +1,9 @@ --- -arduino_version: "1.8.18" +arduino_version: "1.8.13" + +#https://www.arduino.cc/download_handler.php?f=/arduino-1.8.13-linuxarm.tar.xz +#arduino_ide_url: "https://downloads.arduino.cc/arduino-1.8.13-linuxaarch64.tar.xz" arduino_ide_url: "https://downloads.arduino.cc/arduino-{{ arduino_version }}-linuxarm.tar.xz" arduino_download_directory: /opt/arduino + +arduino_port: "/dev/ttyACM0" diff --git a/roles/arduino/tasks/main.yml b/roles/arduino/tasks/main.yml index a4ad044..faf2d9b 100644 --- a/roles/arduino/tasks/main.yml +++ b/roles/arduino/tasks/main.yml @@ -9,3 +9,46 @@ - name: "install inotool with pip" pip: name: ino + +- name: Create Arduino download directory. + become: yes + file: + state: directory + path: "{{ arduino_download_directory }}" + mode: "0755" + owner: root + group: root + +- name: Download Arduino IDE and checksum files. + become: yes + get_url: + url: "{{ arduino_ide_url }}" + dest: "{{ arduino_download_directory }}/{{ arduino_ide_url|basename }}" + +- name: Extract Arduino archive. + become: yes + unarchive: + src: "{{ arduino_download_directory }}/{{ arduino_ide_url|basename }}" + dest: "{{ arduino_download_directory }}/" + remote_src: yes + creates: "{{ arduino_download_directory }}/arduino-{{ arduino_version }}" + +- name: Install Arduino IDE. + become: yes + command: "{{ arduino_download_directory }}/arduino-{{ arduino_version }}/install.sh" + # Cheating a bit and chaining the install.sh logic with directory extraction, + # to maintain idempotence. + args: + creates: "{{ arduino_download_directory }}/arduino-{{ arduino_version }}" + +- name: Installs Arduino helper scripts. + become: yes + template: + src: "{{ item }}" + dest: "/usr/local/bin/{{ item.rstrip('.j2') }}" + mode: "0755" + owner: root + group: root + with_items: + - arduino-push.j2 + - arduino-verify.j2 diff --git a/roles/arduino/templates/arduino-push.j2 b/roles/arduino/templates/arduino-push.j2 new file mode 100644 index 0000000..c5b3279 --- /dev/null +++ b/roles/arduino/templates/arduino-push.j2 @@ -0,0 +1,18 @@ + +#!/bin/bash +# {{ ansible_managed }} +set -e + + +# Ensure sketchfile is provided as an argument. This is the code file +# that will be compiled and pushed to the Arduino board. +if [[ -z "$1" ]]; then + echo "Usage: $0 " + exit 1 +fi + +# Declare path to Arduino binary. Will change according to Arduino version use. +ARDUINO_BINARY="/opt/arduino/arduino-{{ arduino_version }}/arduino" + +# Push code file to Arduino board +$ARDUINO_BINARY --port "{{ arduino_port }}" --upload "$1" diff --git a/roles/arduino/templates/arduino-verify.j2 b/roles/arduino/templates/arduino-verify.j2 new file mode 100644 index 0000000..066f201 --- /dev/null +++ b/roles/arduino/templates/arduino-verify.j2 @@ -0,0 +1,17 @@ +#!/bin/bash +# {{ ansible_managed }} +set -e + + +# Ensure sketchfile is provided as an argument. This is the code file +# that will be compiled and its results reported. +if [[ -z "$1" ]]; then + echo "Usage: $0 " + exit 1 +fi + +# Declare path to Arduino binary. Will change according to Arduino version use. +ARDUINO_BINARY="/opt/arduino/arduino-{{ arduino_version }}/arduino" + +# Build and verify code file without pushing to board. +$ARDUINO_BINARY --verify "$1"