# https://taskfile.dev

version: '3'

vars:
  USER_ID:
    sh: 'id -u'
  GROUP_ID:
    sh: 'id -g'
  HOSTS_FILE: 'ansible/hosts_prod'
  REMOTE_USER: 'major'
  REMOTE_HOST:
    sh: 'cat {{.HOSTS_FILE}} | xargs'

tasks:
  ssh:
    cmds:
      - ssh {{.REMOTE_USER}}@{{.REMOTE_HOST}}

  edit-vars:
    cmds:
      - ansible-vault edit ansible/vars/vars.yml
    env:
      EDITOR: micro

  list-tags:
    cmds:
      - >-
        ansible-playbook
        --inventory="{{.HOSTS_FILE}}"
        --list-tags
        ansible/configuration.yml

  configure:
    internal: true
    vars:
      TAGS: '{{ (empty .TAGS) | ternary "" (list "--tags=\"" .TAGS "\"" | join "") }}'
    cmds:
      - >- 
        ansible-playbook
        --become
        --user="{{.REMOTE_USER}}"
        --inventory="{{.HOSTS_FILE}}"
        --extra-vars="ansible_python_interpreter=/usr/bin/python3"
        {{.TAGS}}
        ansible/configuration.yml

  configure-all:
    cmds:
      - task: configure

  configure-monitoring:
    cmds:
      - task: configure
        vars: { TAGS: 'monitoring' }

  configure-apps:
    cmds:
      - task: configure
        vars: { TAGS: 'webserver,apps,env' }

  configure-users:
    cmds:
      - task: configure
        vars: { TAGS: 'apps,env' }

  format-py-files:
    cmds:
      - >-
        docker run
        --rm
        -u {{.USER_ID}}:{{.GROUP_ID}}
        -v $PWD:/app
        -w /app
        pyfound/black:latest_release
        black .