Files
blender-formula/blender/init.sls
T

64 lines
2.0 KiB
Plaintext

{% from "blender/map.jinja" import blender with context %}
# 1. Download tarball to minion's local cache/tmp directory with custom User-Agent
blender_download_tarball:
file.managed:
- name: /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz
- source: {{ blender.download_url }}
- skip_verify: True
- http_headers:
User-Agent: 'Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0'
- unless:
- test -d {{ blender.archive_dir }}
# 2. Extract from local file system
blender_extract_tarball:
archive.extracted:
- name: {{ blender.archive_dir }}
- source: /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz
- enforce_ownership_on: {{ blender.archive_dir }}
- options: '--strip-components=1'
- if_missing: {{ blender.archive_dir }}/blender
- require:
- file: blender_download_tarball
# 3. Maintain generic symlink pointing to active version
blender_opt_symlink:
file.symlink:
- name: {{ blender.symlink_dir }}
- target: {{ blender.archive_dir }}
- force: True
- require:
- archive: blender_extract_tarball
# 4. Create CLI launcher symlink
blender_bin_symlink:
file.symlink:
- name: {{ blender.bin_dir }}/blender
- target: {{ blender.symlink_dir }}/blender
- force: True
- require:
- file: blender_opt_symlink
# 5. Deploy desktop menu shortcut
blender_desktop_entry:
file.managed:
- name: {{ blender.desktop_dir }}/blender.desktop
- source: salt://blender/templates/blender.desktop.jinja
- template: jinja
- mode: '0644'
- user: root
- group: root
- context:
version: "{{ blender.version }}"
exec_path: "{{ blender.symlink_dir }}/blender %f"
icon_path: "{{ blender.symlink_dir }}/blender.svg"
- require:
- file: blender_opt_symlink
# 6. Optional: Clean up cached tarball after extraction
blender_cleanup_tarball:
file.absent:
- name: /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz
- require:
- archive: blender_extract_tarball