diff --git a/states/delta/defaults.yaml b/states/delta/defaults.yaml new file mode 100644 index 0000000..2cd030d --- /dev/null +++ b/states/delta/defaults.yaml @@ -0,0 +1,9 @@ +--- +delta: + enabled: true + install_dir: /usr/local/apps + release_dir: /usr/local/apps/releases + mirror: https://github.com/dandavison/delta/releases/download + version: 0.18.2 + os: linux + arch: amd64 diff --git a/states/delta/init.sls b/states/delta/init.sls new file mode 100644 index 0000000..e39dc86 --- /dev/null +++ b/states/delta/init.sls @@ -0,0 +1,3 @@ +--- +include: + - .install diff --git a/states/delta/install.sls b/states/delta/install.sls new file mode 100644 index 0000000..972b02f --- /dev/null +++ b/states/delta/install.sls @@ -0,0 +1,33 @@ +--- +{%- from "delta/map.jinja" import delta with context %} +{% set archive_exclude_dir = './delta-' + delta.version + '-' + delta.arch + '-unknown-' + delta.os + '-' + delta.variant %} +delta-archive-extract: + archive.extracted: + - name: {{ delta.release_dir }}/delta-v{{ delta.version }}-{{ delta.os }}-{{ delta.arch }} + - source: {{ delta.mirror }}/{{ delta.version }}/delta-{{ delta.version }}-{{ delta.arch }}-unknown-{{ delta.os|lower }}-{{ delta.variant }}.tar.gz + - skip_verify: true + - options: > + --transform 's|^\{{ archive_exclude_dir }}|/|g' + --transform 's|UNLICENSE.*||g' + --transform 's|doc||g' + --transform 's|complete||g' + --strip 1 + - enforce_toplevel: false + - user: root + - group: root + - enforce_ownership_on: {{ delta.release_dir }}/delta-v{{ delta.version }}-{{ delta.os }}-{{ delta.arch }} + - if_missing: {{ delta.release_dir }}/delta-v{{ delta.version }}-{{ delta.os }}-{{ delta.arch }}/delta + +delta-binary-symlink: + file.symlink: + - name: /usr/local/bin/delta + - target: {{ delta.release_dir }}/delta-v{{ delta.version }}-{{ delta.os }}-{{ delta.arch }}/delta + - force: true + - require: + - archive: delta-archive-extract + +delta-cleanup: + software.cleanup: + - name: delta + - path: {{ delta.release_dir }} + - version: v{{ delta.version }} diff --git a/states/delta/kernelmap.yaml b/states/delta/kernelmap.yaml new file mode 100644 index 0000000..40943f2 --- /dev/null +++ b/states/delta/kernelmap.yaml @@ -0,0 +1,3 @@ +--- +Linux: + os: "linux" diff --git a/states/delta/map.jinja b/states/delta/map.jinja new file mode 100644 index 0000000..2a52774 --- /dev/null +++ b/states/delta/map.jinja @@ -0,0 +1,14 @@ +{%- import_yaml "delta/defaults.yaml" as default_settings -%} + +{%- import_yaml "delta/kernelmap.yaml" as kernelmap -%} +{%- import_yaml "delta/osarchmap.yaml" as osarchmap -%} + +{%- set defaults = salt['grains.filter_by'](default_settings, + default='delta', + merge=salt['grains.filter_by'](osarchmap, grain='osarch', + merge=salt['grains.filter_by'](kernelmap, grain='kernel') + ) + ) +-%} + +{%- set delta = salt['pillar.get']('delta', default=defaults, merge=True) -%} \ No newline at end of file diff --git a/states/delta/osarchmap.yaml b/states/delta/osarchmap.yaml new file mode 100644 index 0000000..04fb489 --- /dev/null +++ b/states/delta/osarchmap.yaml @@ -0,0 +1,29 @@ +--- +amd64: + arch: "x86_64" + variant: musl + +x86_64: + arch: "x86_64" + variant: musl + +386: + arch: "686" + variant: gnu + +arm64: + arch: "aarch64" + variant: gnu + +aarch64: + arch: "aarch64" + variant: gnu + +armv6l: + arch: "arm" + +armv7l: + arch: "arm" + +armhf: + arch: "arm"