72 lines
2.0 KiB
YAML
72 lines
2.0 KiB
YAML
---
|
|
- name: Ensure Bun install root exists
|
|
ansible.builtin.file:
|
|
path: "{{ bun_install_root }}"
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: "0755"
|
|
|
|
- name: Set Bun artifact values
|
|
ansible.builtin.set_fact:
|
|
bun_archive_name: "bun-{{ bun_arch_suffix }}.zip"
|
|
bun_download_url: "https://github.com/oven-sh/bun/releases/download/bun-v{{ bun_version }}/bun-{{ bun_arch_suffix }}.zip"
|
|
bun_archive_path: "/tmp/bun-v{{ bun_version }}-{{ bun_arch_suffix }}.zip"
|
|
bun_extract_path: "{{ bun_install_root }}/bun-v{{ bun_version }}-{{ bun_arch_suffix }}"
|
|
|
|
- name: Ensure versioned Bun extract directory exists
|
|
ansible.builtin.file:
|
|
path: "{{ bun_extract_path }}"
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: "0755"
|
|
|
|
- name: Download Bun release archive
|
|
ansible.builtin.get_url:
|
|
url: "{{ bun_download_url }}"
|
|
dest: "{{ bun_archive_path }}"
|
|
mode: "0644"
|
|
|
|
- name: Extract Bun archive
|
|
ansible.builtin.unarchive:
|
|
src: "{{ bun_archive_path }}"
|
|
dest: "{{ bun_extract_path }}"
|
|
remote_src: true
|
|
creates: "{{ bun_extract_path }}/.extracted"
|
|
|
|
- name: Mark Bun extraction complete
|
|
ansible.builtin.file:
|
|
path: "{{ bun_extract_path }}/.extracted"
|
|
state: touch
|
|
mode: "0644"
|
|
|
|
- name: Locate extracted Bun binary
|
|
ansible.builtin.find:
|
|
paths: "{{ bun_extract_path }}"
|
|
recurse: true
|
|
file_type: file
|
|
patterns: bun
|
|
register: bun_binary_find
|
|
|
|
- name: Fail when Bun binary is missing
|
|
ansible.builtin.fail:
|
|
msg: "Bun binary was not found under {{ bun_extract_path }} after extraction."
|
|
when: bun_binary_find.matched | int == 0
|
|
|
|
- name: Select Bun binary path
|
|
ansible.builtin.set_fact:
|
|
bun_binary_path: "{{ (bun_binary_find.files | sort(attribute='path') | first).path }}"
|
|
|
|
- name: Ensure Bun binary has execute permission
|
|
ansible.builtin.file:
|
|
path: "{{ bun_binary_path }}"
|
|
mode: "0755"
|
|
|
|
- name: Link Bun binary into standard PATH
|
|
ansible.builtin.file:
|
|
src: "{{ bun_binary_path }}"
|
|
dest: /usr/local/bin/bun
|
|
state: link
|
|
force: true
|