- include_role:
    name: per_user
    apply:
      become: yes
      become_user: "{{ build_user.name }}"

- name: Install packages
  package:
    name:
      - base-devel
      - gnupg
      - devtools # Creates /usr/share/devtools/makepkg-x86_64.conf and provides mkarchroot
      - base-devel
      - vifm # For aurutils
      - vim # For aurutils
      - expect # For aurutils
      - pacman-contrib # For paccache for aurutils-purge
    state: present

- name: Extract aurutils aur entry
  become_user: "{{ build_user.name }}"
  unarchive:
    src: https://aur.archlinux.org/cgit/aur.git/snapshot/aurutils.tar.gz
    dest: "/home/{{ build_user.name }}/.config/ansible_deploy/"
    remote_src: yes
    creates: "/home/{{ build_user.name }}/.config/ansible_deploy/aurutils"

- name: Check trusted gpg keys
  command: pacman-key -l
  register: pacmankeys
  changed_when: false
  check_mode: no
  no_log: true

- name: Trust the signing key for the aurutils package
  command: pacman-key --recv-keys DBE7D3DD8C81D58D0A13D0E76BC26A17B9B7018A
  when: '"DBE7D3DD8C81D58D0A13D0E76BC26A17B9B7018A" not in pacmankeys.stdout'

- name: Trust my signing key
  command: pacman-key -a -
  args:
    stdin: "{{ lookup('file', pgp_key|default('gpg.asc')) }}"
  when: '"B848159363C2877917954BE127DE40D9B8455C1B" not in pacmankeys.stdout'
  register: my_key_imported

- name: Sign my signing key
  command: pacman-key --lsign-key "B848159363C2877917954BE127DE40D9B8455C1B"
  when: my_key_imported.changed

- name: Build the aurutils package
  become_user: "{{ build_user.name }}"
  command: makepkg -s --noconfirm
  args:
    chdir: "/home/{{ build_user.name }}/.config/ansible_deploy/aurutils"
    creates: "/home/{{ build_user.name }}/.config/ansible_deploy/aurutils/aurutils-*-any.pkg.tar.*"

- name: Install aurutils
  shell: "pacman --noconfirm -U /home/{{ build_user.name }}/.config/ansible_deploy/aurutils/aurutils-*-any.pkg.tar.*"
  args:
    creates: /usr/bin/aur

- name: Create owned directories
  file:
    name: "{{ item }}"
    state: directory
    owner: "{{ build_user.name }}"
    group: "{{ build_user.group }}"
    mode: 0755
  loop:
    - /var/cache/pacman/custom

- name: Create directories
  file:
    name: "{{ item }}"
    state: directory
    owner: root
    group: root
    mode: 0755
  loop:
    - /etc/aurutils

- name: Install configs
  copy:
    src: "files/{{ item.src }}"
    dest: "{{ item.dest }}"
    mode: 0644
    owner: root
    group: root
  loop:
    - src: aurutils.conf
      dest: /etc/pacman.d/conf.d/
    - src: pacman-x86_64.conf
      dest: /etc/aurutils/
    - src: makepkg.conf # TODO: Is this needed or can I use the default from devtools?
      dest: /etc/aurutils/

- name: chown the custom package db
  file:
    path: "{{ item }}"
    owner: "{{ build_user.name }}"
    recurse: true
  loop:
    - /var/cache/pacman/custom/

- name: Create custom repo db
  command: repo-add --new --sign /var/cache/pacman/custom/custom.db.tar "/home/{{ build_user.name }}/.config/ansible_deploy/aurutils/aurutils-*-any.pkg.tar.*"
  become: true
  become_user: "{{ build_user.name }}"
  args:
    creates: /var/cache/pacman/custom/custom.db.tar.sig

- name: Install scripts
  copy:
    src: "files/{{ item.src }}"
    dest: "{{ item.dest }}"
    mode: 0755
    owner: root
    group: root
  loop:
    - src: aurutils-purge
      dest: /usr/local/bin/aurutils-purge
    - src: aurutils-nuke
      dest: /usr/local/bin/aurutils-nuke
    - src: aurutils-sync
      dest: /usr/local/bin/aurutils-sync
    - src: aurutils-update-devel-packages
      dest: /usr/local/bin/

- name: build aurutils inside aurutils
  become_user: "{{ build_user.name }}"
  command: aurutils-sync --no-view aurutils
  args:
    creates: "/var/cache/pacman/custom/aurutils-*-any.pkg.tar.*"
  register: buildaurutils

- name: Install aurutils
  command: pacman -Syy aurutils
  when: buildaurutils.changed

- name: chown the custom package db
  file:
    path: "{{ item }}"
    owner: "{{ build_user.name }}"
    state: file
  loop:
    - /var/cache/pacman/custom/custom.db
