# SPDX-License-Identifier: MIT - name: 'Check if ZFS functional' register: 'genvm_archlinux_zfs_pacman_cache_os_has_functional_zfs' changed_when: false failed_when: false ansible.builtin.shell: | zpool list - name: 'If ZFS functional check if pacman cache dataset exists' when: 'genvm_archlinux_zfs_pacman_cache_os_has_functional_zfs.rc == 0' register: 'genvm_archlinux_zfs_pacman_cache_zfs_has_pacman_cache_dataset' changed_when: false failed_when: false ansible.builtin.shell: | zfs list zpool/data/var/cache/pacman/pkg - name: 'If no pacman cache dataset exists create dataset' when: 'genvm_archlinux_zfs_pacman_cache_zfs_has_pacman_cache_dataset.rc > 0' register: 'genvm_archlinux_zfs_pacman_cache_pacman_cache_dir_was_temp_moved' changed_when: 'genvm_archlinux_zfs_pacman_cache_pacman_cache_dir_was_temp_moved.rc == 0' ansible.builtin.shell: | mv '/var/cache/pacman/pkg'{,'.bak'} && \ if ! zfs list zpool/data/var &>/dev/null; then zfs create -o canmount=off zpool/data/var; fi && \ if ! zfs list zpool/data/var/cache &>/dev/null; then zfs create -o canmount=off zpool/data/var/cache; fi && \ if ! zfs list zpool/data/var/cache/pacman &>/dev/null; then zfs create -o canmount=off zpool/data/var/cache/pacman; fi && \ zfs create zpool/data/var/cache/pacman/pkg && \ rsync -a --remove-source-files '/var/cache/pacman/pkg'{'.bak',}'/' && \ find '/var/cache/pacman/pkg.bak' -type d -empty -delete