---
- name: Check if admin user exists
  command: "mysql --host={{ gitea_db_server }} --user={{ gitea_db_user }} --password='{{ gitea_db_pass }}' {{ gitea_db_name }} -ss -e \"select count(*) from user where lower_name='gitadmin'\""
  register: gitea_admin
  changed_when: False
  retries: 10 # first time gitea starts, it'll take some time to create the tables
  delay: 10
  until: gitea_admin.rc == 0
  tags: gitea

  # The user table is created before the email_address. So on first run, we might have an error when creating the
  # admin account. Here, we just ensure the email_address table exists before we can continue
- name: Check if the email_address table exists
  command: "mysql --host={{ gitea_db_server }} --user={{ gitea_db_user }} --password='{{ gitea_db_pass }}' {{ gitea_db_name }} -ss -e \"select count(*) from email_address\""
  register: gitea_email_table
  changed_when: False
  retries: 10
  delay: 10
  until: gitea_email_table.rc == 0
  when: gitea_admin.stdout != "1"
  tags: gitea

- name: Create the admin account
  command: "{{ gitea_root_dir }}/bin/gitea admin user create --name gitadmin --admin --password admin --email admin@example.net --config {{ gitea_root_dir }}/etc/app.ini"
  args:
    chdir: "{{ gitea_root_dir }}"
  become_user: gitea
  when: gitea_admin.stdout != "1"
  tags: gitea