- name: Record (initial) disk space used
  shell: df -B1 --output=used / | tail -1
  register: df1


- name: "Install BitTorrent packages: transmission-daemon, transmission-cli"
  package:
    name:
      - transmission-daemon
      - transmission-cli
    state: present


- block:

  - name: "TRY TO COMPILE & INSTALL very latest Transmission, installing ~5 binaries in /usr/local/bin to take precedence over above ~6 binaries in /usr/bin (attempt surgery on systemd unit file from apt install above!)"
    meta: noop

  # https://github.com/transmission/transmission/blob/main/docs/Building-Transmission.md#on-unix
  # https://github.com/transmission/transmission/issues/5362 tips thanks to @tearfur
  - name: apt install build-essential cmake libcurl4-openssl-dev libssl-dev libsystemd-dev    # git python3
    package:
      name:
        - build-essential
        - cmake
        - libcurl4-openssl-dev
        - libssl-dev
        - libsystemd-dev
      state: present

  - name: Git clone https://github.com/transmission/transmission to /opt/iiab/transmission
    git:
      repo: https://github.com/transmission/transmission
      dest: /opt/iiab/transmission
      #version: 4.0.x    # Otherwise default branch 'main'
      depth: 1
      force: yes

  # https://github.com/transmission/transmission/blob/main/docs/Building-Transmission.md#building-transmission-from-git-first-time
  - name: Compile, install & remove detritus (CAN TAKE 60+ MINUTES ON RASPBERRY PI 4!)
    shell: |
      cd /opt/iiab/transmission
      git submodule update --init --recursive
      mkdir build
      cd build
      cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
      make
      make install
      cd
      rm -rf /opt/iiab/transmission    # 2023-06-12: Frees up 1.1 GB on 32-bit RasPiOS.  Frees up 1.6 GB on 64-bit RasPiOS.

  - name: Attempt surgery on /lib/systemd/system/transmission-daemon.service (1) changing --log-error to --log-level=error (2) changing /usr/bin/transmission* to /usr/local/bin/transmission*
    shell: |
      sed -i 's/--log-error/--log-level=error/' /lib/systemd/system/transmission-daemon.service    # --log-error deprecated since ~2020
      sed -i 's#/usr/bin/transmission#/usr/local/bin/transmission#' /lib/systemd/system/transmission-daemon.service    # daemon_reload handled by enable-or-disable.yml

  when: transmission_compile_latest


- name: Create download dir {{ transmission_download_dir }}, owned by {{ transmission_user }}:{{ transmission_group }}
  file:
    state: directory
    path: "{{ transmission_download_dir }}"    # /library/transmission
    owner: "{{ transmission_user }}"     # debian-transmission
    group: "{{ transmission_group }}"    # debian-transmission

- name: Stop 'transmission-daemon' systemd service, before modifying its settings
  systemd:
    name: transmission-daemon
    state: stopped
  ignore_errors: yes

# 'transmission-daemon -d' (--dump-settings) CAN GENERATE A NEW settings.json
# ...then customize ~8 var lines to create a new templates/settings.json.j2

- name: Back up prior /etc/transmission-daemon/settings.json (file originally from apt, or new symlink contents) to /etc/transmission-daemon/settings.json.old*
  copy:
    src: /etc/transmission-daemon/settings.json
    dest: /etc/transmission-daemon/settings.json.old
    mode: preserve
    owner: "{{ transmission_user }}"     # debian-transmission
    group: "{{ transmission_group }}"    # debian-transmission
    backup: yes
  ignore_errors: yes

- name: "Back up IIAB's templated version to /etc/transmission-daemon/settings.json.iiab"
  template:
    src: settings.json.j2
    dest: /etc/transmission-daemon/settings.json.iiab
    owner: "{{ transmission_user }}"     # debian-transmission
    group: "{{ transmission_group }}"    # debian-transmission
    mode: '0600'

- name: Install /var/lib/transmission-daemon/.config/transmission-daemon/settings.json from template
  template:
    src: settings.json.j2
    dest: /var/lib/transmission-daemon/.config/transmission-daemon/settings.json
    owner: "{{ transmission_user }}"     # debian-transmission
    group: "{{ transmission_group }}"    # debian-transmission
    mode: '0600'

- name: "Reverse Transmission's fragile OOTB symlink -- instead we establish /etc/transmission-daemon/settings.json -> /var/lib/transmission-daemon/.config/transmission-daemon/settings.json -- REASON: /etc/transmission-daemon/settings.json was intermittently being IGNORED, as Transmission sometimes breaks its own symlink from /var/lib/transmission-daemon/.config/transmission-daemon/settings.json (by turning it into a file instead)"
  file:
    path: /etc/transmission-daemon/settings.json
    src: /var/lib/transmission-daemon/.config/transmission-daemon/settings.json    # Symlink /var/lib/transmission-daemon/home/settings.json also points to this
    state: link
    force: yes


# RECORD Transmission AS INSTALLED

- name: Record (final) disk space used
  shell: df -B1 --output=used / | tail -1
  register: df2

- name: Add 'transmission_disk_usage = {{ df2.stdout|int - df1.stdout|int }}' to {{ iiab_ini_file }}
  ini_file:
    path: "{{ iiab_ini_file }}"    # /etc/iiab/iiab.ini
    section: transmission
    option: transmission_disk_usage
    value: "{{ df2.stdout|int - df1.stdout|int }}"

- name: "Set 'transmission_installed: True'"
  set_fact:
    transmission_installed: True

- name: "Add 'transmission_installed: True' to {{ iiab_state_file }}"
  lineinfile:
    path: "{{ iiab_state_file }}"    # /etc/iiab/iiab_state.yml
    regexp: '^transmission_installed'
    line: 'transmission_installed: True'