---
# Create service user
- include_tasks: service_user.yml

- name: "Clone {{ service_name }} project"
  git:
    repo: "{{ service_repo }}"
    dest: "{{ service_path }}"
    version: 0.11.2
  become: true
  become_user: "{{ service_user }}"

# Setup dependencies
- name: "Install {{ service_name }} dependencies"
  npm:
    path: "{{ service_path }}"
    production: true
  become: true
  become_user: "{{ service_user }}"
  register: npm_result
  retries: 3
  until: npm_result is succeeded

- name: "Configure {{ service_name }}"
  template:
    src: config.yaml.j2
    dest: "{{ service_path }}/config.yaml"
    owner: "{{ service_user }}"
    group: nogroup
    mode: 0600

# Service file
- name: "Install {{ service_name }} systemd unit"
  template:
    src: systemd/appservice.service.j2
    dest: "/etc/systemd/system/{{ service_name }}.service"
    owner: root
    group: root
    mode: 0644

# TODO generate registration
# node app.js -r -f irc-registration.yaml \
# -u "http://localhost:9999" -c config.yaml -l ircbot

- name: Copy appservice registration file
  copy:
    src: "{{ service_path }}/irc-registration.yaml"
    dest: "/etc/matrix-synapse/{{ service_name }}-registration.yaml"
    owner: matrix-synapse
    group: nogroup
    mode: 0600
    remote_src: true

# Run
- name: "Ensure that {{ service_name }} is started"
  systemd:
    name: "{{ service_name }}"
    state: started
    enabled: true
    daemon_reload: true