--- - name: Check installed {{ source_tool.name }} binary ansible.builtin.stat: path: "/usr/local/bin/{{ source_tool.install_name | default(source_tool.name) }}" register: source_tool_installed_binary - name: Clone {{ source_tool.name }} repository ansible.builtin.git: repo: "{{ source_tool.repo }}" dest: "{{ user_home }}/.local/src/{{ source_tool.name }}" update: true become_user: "{{ username }}" environment: HOME: "{{ user_home }}" register: source_tool_repo_state - name: Check built {{ source_tool.name }} binary ansible.builtin.stat: path: "{{ user_home }}/.local/src/{{ source_tool.name }}/{{ source_tool.binary_name | default(source_tool.name) }}" register: source_tool_built_binary - name: Build {{ source_tool.name }} ansible.builtin.command: cmd: "{{ source_tool.build_cmd }}" chdir: "{{ user_home }}/.local/src/{{ source_tool.name }}" when: - source_tool_repo_state.changed or not source_tool_built_binary.stat.exists - name: Install {{ source_tool.name }} ansible.builtin.copy: src: "{{ user_home }}/.local/src/{{ source_tool.name }}/{{ source_tool.binary_name | default(source_tool.name) }}" dest: "/usr/local/bin/{{ source_tool.install_name | default(source_tool.name) }}" remote_src: true owner: root group: root mode: "0755" become: true when: - source_tool_repo_state.changed or not source_tool_installed_binary.stat.exists