---
# Install version of Codium which can use local compilers and SDKs like Flutter
#   properly. Flatpaks need workarounds to do this. This also lets us remove
#   CodeOSS and use Codium in 2 ways.
# Commands sourced and modified based on:
#   https://vscodium.com/#install-on-debian-ubuntu-deb-package
# This also exists but was not utilized:
#   https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo

## Facts ##

# Paths

- name: Workstation | Linux | Software | VS Codium | Facts
  set_fact:
    vscodium_source_list: "/etc/apt/sources.list.d/vscodium.list"
    vscodium_keyfile: "/usr/share/keyrings/vscodium.gpg"
  when: ansible_pkg_mgr == "apt"

# Checks

- name: Workstation | Linux | Software | VS Codium | Check PPA
  stat:
    path: "{{ vscodium_source_list }}"
  register: vscodium_source_exists
  when: ansible_pkg_mgr == "apt"

## Install Repo ##

- name: Workstation | Linux | Software | VS Codium | Add PPA
  shell: "{{ item }}"
  loop:
    - "wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg \
      | gpg --dearmor \
      | sudo tee {{ vscodium_keyfile }} > /dev/null"
    - "echo 'deb [arch=amd64,arm64 signed-by={{ vscodium_keyfile }}] https://download.vscodium.com/debs vscodium main' \
      | sudo tee {{ vscodium_source_list }}"
    - "sudo apt update"
  when: ansible_pkg_mgr == "apt" and coding == true and not vscodium_source_exists.stat.exists

## Install Package ##

- name: Workstation | Linux | Software | VS Codium | Install
  package:
    name:
      - codium
    state: present
  when: ansible_pkg_mgr == "apt" and coding == true

## Remove Package ##

- name: Workstation | Linux | Software | VS Codium | Uninstall
  package:
    name:
      - codium
    state: absent
  when: ansible_pkg_mgr == "apt" and coding != true

## Remove Repo ##

- name: Workstation | Linux | Software | VS Codium | Remove PPA
  shell: "{{ item }}"
  loop:
    - "mv {{ vscodium_source_list }} ~/TRASH/"
    - "mv /etc/apt/keyrings/vscodium*.gpg ~/TRASH/"
    - "sudo apt update"
  when: ansible_pkg_mgr == "apt" and coding != true and vscodium_source_exists.stat.exists