- name: Install and setup covenant
  hosts: all
  connection: ssh
  become: true
  tasks:
    - name: Ensure basic packets are installed
      apt:
        name: "{{ packages }}"
      vars:
        packages:
          - git
          - tmux
          - gpg
          - apt-transport-https

    - name: clone git repository
      git:
        repo: https://github.com/cobbr/Covenant.git
        dest: "/opt/Covenant"

    - name: add microsoft key to apt keys
      shell: |
        wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
        mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
        wget -q https://packages.microsoft.com/config/debian/10/prod.list
        mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
        chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
        chown root:root /etc/apt/sources.list.d/microsoft-prod.list
      args:
        warn: no

    - name: Install dotnet core runtime and sdk
      apt:
        name: "{{ packages }}"
        update_cache: yes
      vars:
        packages:
          - dotnet-sdk-2.2
          - dotnet-runtime-2.2

    - name: Build Covenant
      command:
        dotnet publish -c Release -o bin
      args:
        chdir: /opt/Covenant/Covenant/
      register: output

    - debug:
        msg: "Build failed"
      when: '"FAILED" in output.stdout'

    - name: run Covenant in tmux
      shell: |
        echo -e "#!/bin/bash\n dotnet Covenant.dll" > /tmp/run_covenant.sh
        chmod +x /tmp/run_covenant.sh
        tmux new -d -s "Covenant" "bash /tmp/run_covenant.sh"
      args:
        chdir: /opt/Covenant/Covenant/bin

