---
- name: Set common facts
  ansible.builtin.import_tasks: tasks/set-default-facts.yml

- name: Deploy {{ svc.name }}
  vars:
    svc: "{{ forgejo_runner_svc }}"
    env: "{{ forgejo_runner_env }}"
    compose: "{{ forgejo_runner_compose }}"
  block:
    - name: Import tasks to create service directory
      ansible.builtin.import_tasks: tasks/steps/create-service-directory.yml
    - name: Import tasks to template docker compose file
      ansible.builtin.import_tasks: tasks/steps/template-docker-compose.yml

    - name: Copy the config
      ansible.builtin.copy:
        src: config.yml
        dest: "{{ (service_path, 'config.yml') | path_join }}"
        mode: "0755"

    - name: Check if service.env already exists
      ansible.builtin.stat:
        path: "{{ (service_path, 'service.env') | path_join }}"
      register: env_file

    - name: Import tasks to prompt for the registration token
      ansible.builtin.import_tasks: tasks/prompt-registration-token.yml
      when: not env_file.stat.exists or force_forgejo_runner_registration | default(False)

    - name: Import tasks create a service.env file
      ansible.builtin.import_tasks: tasks/steps/template-service-env.yml
    - name: Import start tasks for common service
      ansible.builtin.import_tasks: tasks/start-common-service.yml

    - name: Register runner
      ansible.builtin.command:
        cmd: docker compose run --rm -it app sh -c
          'forgejo-runner register --no-interactive --token ${FORGEJO_RUNNER_REGISTRATION_TOKEN} --instance ${FORGEJO_INSTANCE_URL}'
        chdir: "{{ service_path }}"
      when: not env_file.stat.exists or force_forgejo_runner_registration | default(False)
      changed_when: true # "when" checks enough. We are sure to change something here.