mirror of
https://gitea.com/mcereda/oam.git
synced 2026-02-08 21:34:25 +00:00
57 lines
2.1 KiB
YAML
57 lines
2.1 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'
|
|
ansible.builtin.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: >-
|
|
set -o pipefail && \
|
|
/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.
|