Files
oam/ansible/xcode-cli-tools.install.yml
2022-05-13 10:53:40 +02:00

56 lines
2.0 KiB
YAML

---
- name: Install Xcode CLI tools on Mac OS X
tags:
- macosx
- darwin
- xcode_cli_tools
- xcode_tools
hosts: all
tasks:
- name: Pre-flight checks
when: ansible_system != 'Darwin'
fail:
msg: "Unsupported OS '{{ ansible_system }}'"
- name: Check Command Line Tools are already installed
check_mode: false
register: cli_tools_check
ansible.builtin.command: xcode-select --print-path
ignore_errors: true
changed_when: false
- name: Try headless installing command line tools
when: cli_tools_check is failed
block:
- name: Force `softwareupdate` to list the Command Line Tools
ansible.builtin.file:
path: /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
state: touch
mode: u=rw,g=rw,o=r
- name: Get the tools' label
register: cli_tools_label
ansible.builtin.shell: >-
/usr/sbin/softwareupdate --list
| grep -B 1 -E 'Command Line Tools'
| awk -F'*' '/^ *\\*/ {print $2}'
| sed -e 's/^ *Label: //' -e 's/^ *//'
| sort -V
| tail -n1
changed_when:
- cli_tools_label.rc == 0
- cli_tools_label.stdout is not match('Command Line Tools for Xcode')
failed_when: cli_tools_label.rc != 0
- name: Install the tools
register: headless_cli_tools_installation
ansible.builtin.command: >-
/usr/sbin/softwareupdate --install --agree-to-license
{{ cli_tools_label.stdout | quote }}
changed_when:
- headless_cli_tools_installation.rc == 0
- headless_cli_tools_installation.stdout is not match('No new software available.')
- name: Print message on failure
when: headless_cli_tools_installation is failed
ansible.builtin.fail:
msg: >-
Headless installation failed. Please execute
'xcode-select --install' in a terminal.