---
version: '3'

vars:
  ANSIBLE_VENV:
    sh: echo "$HOME/.local/megabytelabs/ansible"

tasks:
  install:ansible:
    cmds:
      - pip3 install ansible

  main:
    deps:
      - install:ansible
    cmds:
      - task: requirements

  requirements:
    deps:
      - requirements:galaxy
      - requirements:python

  requirements:galaxy:
    cmds:
      - |
        PATH="$PATH:$HOME/.local/bin"
        ansible-galaxy install -r requirements.yml
    status:
      - '[ ! -f requirements.yml ]'

  requirements:python:
    cmds:
      - pip3 install requirements.txt
    status:
      - '[ ! -f requirements.txt ]'

  role:
    deps:
      - :install:software:docker
    desc: Install an Ansible role by using Docker
    summary: |
      # Install an Ansible Role

      This task installs a single Ansible role on the localhost. It
      will download the role from Ansible Galaxy and then provision
      the localhost using a Docker container (so that Ansible dependencies
      are not permanently installed).

      **Example:**
      `task install:ansible:role -- professormanhattan/androidstudio
    cmds:
      - |
        if [ -d ~/.ansible/roles/{{.CLI_ARGS}} ]; then
          rm -rf ~/.ansible/roles/{{.CLI_ARGS}}
        fi
      - ansible-galaxy install --force --ignore-errors professormanhattan.androidstudio
      - echo "TODO - run Docker and provision"

  start:
    deps:
      - :install:software:python
    cmds:
      - python3 -m venv {{.ANSIBLE_VENV}}
      - |
        source {{.ANSIBLE_VENV}}/bin/activate
        task install:ansible:main
