--- - name: get latest github release uri: url: https://api.github.com/repos/jmespath/jp/releases/latest headers: '{{github_auth_headers}}' 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