42 lines
1.1 KiB
YAML
42 lines
1.1 KiB
YAML
---
|
|
- name: get latest github release
|
|
uri:
|
|
url: https://api.github.com/repos/jmespath/jp/releases/latest
|
|
register: latest
|
|
|
|
- set_fact:
|
|
arch: '{{ [ansible_architecture] |
|
|
map("extract", { "arm64": "arm64", "x86_64": "amd64" }) | first }}'
|
|
|
|
- set_fact:
|
|
asset_query: '[?contains(name, `jp-darwin-{{arch}}`)] | [0]'
|
|
assets: '{{latest.json.assets}}'
|
|
latest_version: '{{latest.json.tag_name}}'
|
|
jp_exe: '{{ansible_env.HOME}}/.local/bin/jp'
|
|
|
|
- name: check if already installed
|
|
stat:
|
|
path: '{{jp_exe}}'
|
|
register: jp_stat
|
|
|
|
- name: get installed version
|
|
when: jp_stat.stat.exists == True
|
|
command: '{{jp_exe}} --version'
|
|
register: jp_version_output
|
|
changed_when: false
|
|
|
|
- when: jp_stat.stat.exists == True
|
|
set_fact:
|
|
installed_version:
|
|
'{{jp_version_output.stdout.strip() | regex_replace("^.*(\d+\.\d+\.\d+).*$", "\1")}}'
|
|
|
|
- set_fact:
|
|
asset: '{{assets | to_json | from_json | json_query(asset_query)}}'
|
|
|
|
- name: download executable
|
|
when: installed_version is not defined or installed_version != latest_version
|
|
get_url:
|
|
url: '{{asset.browser_download_url}}'
|
|
dest: '{{jp_exe}}'
|
|
mode: +x
|