- name: Ensure filesystem
  ansible.builtin.apt:
    name: cifs-utils
    state: present
    update_cache: true

- name: Set mount as list
  set_fact:
    mount_list: "{{ mount.split(',') | reject('equalto', '') | select('match', '^[A-Za-z0-9_]+$') | list }}"
  when: mount is defined

- name: Create credentials file
  ansible.builtin.copy:
    dest: /root/.share
    content: |
      username={{ login }}
      password={{ password }}
    owner: root
    group: root
    mode: '0600'

- name: Ensure mount directories exist
  ansible.builtin.file:
    path: "{{ '/share' if item == 'share' else '/share/' ~ item }}"
    state: directory
    owner: root
    group: root
    mode: '0777'
  loop: "{{ mount_list }}"
  loop_control:
    label: "{{ item }}"

- name: Create mount service
  ansible.builtin.template:
    src: share.service.j2
    dest: "/etc/systemd/system/{{ ('share' if item == 'share' else 'share-' ~ item) }}.service"
    owner: root
    group: root
    mode: '0644'
  loop: "{{ mount_list }}"
  loop_control:
    label: "{{ item }}"

- name: Create mount timer
  ansible.builtin.template:
    src: share.timer.j2
    dest: "/etc/systemd/system/{{ ('share' if item == 'share' else 'share-' ~ item) }}.timer"
    owner: root
    group: root
    mode: '0644'
  loop: "{{ mount_list }}"
  loop_control:
    label: "{{ item }}"

- name: Reload systemd
  ansible.builtin.systemd_service:
    daemon_reload: true

- name: Enable mount service
  ansible.builtin.systemd:
    name: "{{ ('share' if item == 'share' else 'share-' ~ item) }}.timer"
    enabled: yes
    state: started
  loop: "{{ mount_list }}"
  loop_control:
    label: "{{ item }}"