51 lines
1.5 KiB
YAML
51 lines
1.5 KiB
YAML
---
|
|
- name: get list of releases from github
|
|
uri:
|
|
url: https://api.github.com/repos/llvm/llvm-project/releases
|
|
register: releases
|
|
|
|
- name: select latest release with Ubuntu binaries
|
|
set_fact:
|
|
release: '{{releases.json | json_query("[?assets | [?contains(name, `x86_64-linux-gnu-ubuntu`)]] | [0]")}}'
|
|
|
|
- name: select from latest available release with x86_64-linux-gnu-ubuntu asset
|
|
set_fact:
|
|
asset: '{{release | json_query("assets | [?contains(name, `x86_64-linux-gnu-ubuntu`)] | [?ends_with(name, `.tar.xz`)] | [0]")}}'
|
|
|
|
- name: process release name for /usr/local/lib/{{package_name}}
|
|
set_fact:
|
|
package_name: '{{release.name | lower | regex_replace(" (\d+)\.\d+\.\d+", "-\1")}}'
|
|
|
|
- name: set path for archive download
|
|
set_fact:
|
|
archive_path: '/tmp/{{asset.name}}'
|
|
|
|
- name: download release archive
|
|
get_url:
|
|
url: '{{asset.browser_download_url}}'
|
|
dest: '{{archive_path}}'
|
|
|
|
- name: create package directory
|
|
become: true
|
|
file:
|
|
path: '/usr/local/lib/{{package_name}}'
|
|
state: directory
|
|
|
|
# TODO: don't extract when not actually doing a n update
|
|
- name: extract release archive
|
|
become: true
|
|
unarchive:
|
|
src: '{{archive_path}}'
|
|
dest: '/usr/local/lib/{{package_name}}'
|
|
extra_opts: ['--strip-components', '1']
|
|
|
|
- name: create symlinks from /usr/local/lib/{package_name}} to /usr/local/bin
|
|
become: true
|
|
file:
|
|
src: '{{item}}'
|
|
dest: '/usr/local/bin/{{item | basename}}'
|
|
state: link
|
|
with_fileglob: '/usr/local/lib/{{package_name}}/bin/*'
|
|
|
|
# TODO: cleanup old installs?
|