---
- name: 'Check app requirements for user "{{ owner_name }}".'
  fail:
    msg: You must set owner name.
  when: not owner_name

- name: 'Create group "{{ owner_group }}".'
  group:
    name: '{{ owner_group }}'
    state: present

- name: 'Create user "{{ owner_name }}".'
  user:
    name: '{{ owner_name }}'
    group: '{{ owner_group }}'
    groups: '{{ owner_extra_groups }}'
    shell: /bin/bash
  register: uc_result

- name: 'Set up user ssh keys for user "{{ owner_name }}".'
  authorized_key:
    user: '{{ owner_name }}'
    key: '{{ item }}'
    state: present
  with_items: '{{ owner_ssh_keys }}'
  when: owner_ssh_keys | length > 0

- name: 'Prepare env variables.'
  set_fact:
    env_dict: '{{ owner_env | combine({
      "CURRENT_UID": uc_result.uid | default(owner_name),
      "CURRENT_GID": uc_result.group | default(owner_group) }) }}'
  tags:
    - env

- name: 'Set up environment variables for user "{{ owner_name }}".'
  template:
    src: env.j2
    dest: '/home/{{ owner_name }}/.env'
    owner: '{{ owner_name }}'
    group: '{{ owner_group }}'
  tags:
    - env

- name: 'Remove absent environment variables for user "{{ owner_name }}" from bashrc.'
  lineinfile:
    path: '/home/{{ owner_name }}/.bashrc'
    regexp: '^export {{ item.key }}='
    state: absent
  with_dict: '{{ env_dict }}'
  tags:
    - env

- name: 'Include environment variables for user "{{ owner_name }}" in bashrc.'
  lineinfile:
    path: '/home/{{ owner_name }}/.bashrc'
    regexp: '^export \$\(grep -v'
    line: 'export $(grep -v "^#" "$HOME"/.env | xargs)'
  tags:
    - env