From b74838419e7862b961c878bd5bc47df6547e4e65 Mon Sep 17 00:00:00 2001 From: Paul Date: Fri, 1 Aug 2025 09:08:33 +0200 Subject: [PATCH] added arduinocli state --- states/arduinocli/defaults.yaml | 7 +++++++ states/arduinocli/init.sls | 3 +++ states/arduinocli/install.sls | 34 ++++++++++++++++++++++++++++++++ states/arduinocli/kernelmap.yaml | 9 +++++++++ states/arduinocli/map.jinja | 14 +++++++++++++ states/arduinocli/osarchmap.yaml | 24 ++++++++++++++++++++++ 6 files changed, 91 insertions(+) create mode 100644 states/arduinocli/defaults.yaml create mode 100644 states/arduinocli/init.sls create mode 100644 states/arduinocli/install.sls create mode 100644 states/arduinocli/kernelmap.yaml create mode 100644 states/arduinocli/map.jinja create mode 100644 states/arduinocli/osarchmap.yaml diff --git a/states/arduinocli/defaults.yaml b/states/arduinocli/defaults.yaml new file mode 100644 index 0000000..3ebb6ef --- /dev/null +++ b/states/arduinocli/defaults.yaml @@ -0,0 +1,7 @@ +--- +arduinocli: + enabled: true + mirror: "https://github.com/arduino/arduino-cli/releases/download" + install_dir: "/usr/local/apps" + release_dir: "/usr/local/apps/releases" + version: "1.2.2" diff --git a/states/arduinocli/init.sls b/states/arduinocli/init.sls new file mode 100644 index 0000000..10ad9a6 --- /dev/null +++ b/states/arduinocli/init.sls @@ -0,0 +1,3 @@ +--- +include: + - .install \ No newline at end of file diff --git a/states/arduinocli/install.sls b/states/arduinocli/install.sls new file mode 100644 index 0000000..3572818 --- /dev/null +++ b/states/arduinocli/install.sls @@ -0,0 +1,34 @@ +--- +{%- from "arduinocli/map.jinja" import arduinocli with context %} +arduinocli-archive-extract: + archive.extracted: + - name: {{ arduinocli.release_dir }}/arduino-cli-{{ arduinocli.version }}_{{ arduinocli.os }}_{{ arduinocli.arch }} + - source: {{ arduinocli.mirror }}/v{{ arduinocli.version }}/arduino-cli_{{ arduinocli.version }}_{{ arduinocli.os }}_{{ arduinocli.arch }}.tar.gz + - options: --exclude LICENSE.txt + - skip_verify: true + - archive_format: tar + - enforce_toplevel: false + - keep: true + - if_missing: {{ arduinocli.release_dir }}/arduino-cli-{{ arduinocli.version }}_{{ arduinocli.os }}_{{ arduinocli.arch }}/arduino-cli + +arduinocli-symlink: + file.symlink: + - name: {{ arduinocli.install_dir }}/arduino-cli + - target: {{ arduinocli.release_dir }}/arduino-cli-{{ arduinocli.version }}_{{ arduinocli.os }}_{{ arduinocli.arch }} + - force: true + - require: + - archive: arduinocli-archive-extract + +arduinocli-bin-symlink: + file.symlink: + - name: /usr/bin/arduino-cli + - target: {{ arduinocli.install_dir }}/arduino-cli/arduino-cli + - force: true + - require: + - archive: arduinocli-archive-extract + +arduinocli-cleanup: + software.cleanup: + - name: arduino-cli + - path: {{ arduinocli.release_dir }} + - version: "{{ arduinocli.version }}" diff --git a/states/arduinocli/kernelmap.yaml b/states/arduinocli/kernelmap.yaml new file mode 100644 index 0000000..b1da454 --- /dev/null +++ b/states/arduinocli/kernelmap.yaml @@ -0,0 +1,9 @@ +--- +Linux: + os: "Linux" + +macOS: + os: "macOS" + +Windows: + os: "Windows" diff --git a/states/arduinocli/map.jinja b/states/arduinocli/map.jinja new file mode 100644 index 0000000..f6cd411 --- /dev/null +++ b/states/arduinocli/map.jinja @@ -0,0 +1,14 @@ +{%- import_yaml "arduinocli/defaults.yaml" as default_settings -%} + +{%- import_yaml "arduinocli/kernelmap.yaml" as kernelmap -%} +{%- import_yaml "arduinocli/osarchmap.yaml" as osarchmap -%} + +{%- set defaults = salt['grains.filter_by'](default_settings, + default='arduinocli', + merge=salt['grains.filter_by'](osarchmap, grain='osarch', + merge=salt['grains.filter_by'](kernelmap, grain='kernel') + ) + ) +-%} + +{%- set arduinocli = salt['pillar.get']('arduinocli', default=defaults, merge=True) -%} \ No newline at end of file diff --git a/states/arduinocli/osarchmap.yaml b/states/arduinocli/osarchmap.yaml new file mode 100644 index 0000000..e4e463b --- /dev/null +++ b/states/arduinocli/osarchmap.yaml @@ -0,0 +1,24 @@ +--- +amd64: + arch: "64bit" + +x86_64: + arch: "64bit" + +386: + arch: "32bit" + +arm64: + arch: "ARM64" + +aarch64: + arch: "ARM64" + +armv6l: + arch: "ARMv6" + +armv7l: + arch: "ARMv7" + +armhf: + arch: "ARMv7"