#!/usr/bin/env zsh

typeset -A known_volumes

if [[ -t 1 ]]; then
  red=$'\e[31m'
  green=$'\e[32m'
  bold=$'\e[1m'
  reset=$'\e[0m'
else
  red=''
  green=''
  bold=''
  reset=''
fi

while true; do
  list_plist=$(diskutil list -plist) || {
    sleep 2
    continue
  }

  volume_count=$(
    plutil -extract VolumesFromDisks raw -o - - <<< "$list_plist"
  ) || {
    sleep 2
    continue
  }

  for ((i = 0; i < volume_count; i++)); do
    disk=$(
      plutil -extract "VolumesFromDisks.$i" raw -o - - \
        <<< "$list_plist" 2>/dev/null
    )

    [[ -n "$disk" ]] || continue

    info=$(diskutil info -plist "$disk" 2>/dev/null) || continue

    uuid=$(
      plutil -extract VolumeUUID raw -o - - \
        <<< "$info" 2>/dev/null
    )

    [[ -n "$uuid" ]] || continue
    [[ -z "${known_volumes[$uuid]-}" ]] || continue

    filesystem=$(
      plutil -extract FilesystemType raw -o - - \
        <<< "$info" 2>/dev/null
    )

    encrypted=$(
      plutil -extract CoreStorageEncrypted raw -o - - \
        <<< "$info" 2>/dev/null
    )

    mountpoint=$(
      plutil -extract MountPoint raw -o - - \
        <<< "$info" 2>/dev/null
    )

    name=$(
      plutil -extract VolumeName raw -o - - \
        <<< "$info" 2>/dev/null
    )

    known_volumes[$uuid]=$disk

    printf 'Nieuwe schijf controleren: %s ... ' "${name:-$disk}"

    if [[ "$filesystem" == "hfs" &&
          "$encrypted" == "true" &&
          -n "$mountpoint" ]]; then
      printf '%s%sHFS+ ENCRYPTIE GEVONDEN%s\n' \
        "$red" "$bold" "$reset"

      printf '%s' "$red"
      printf '%-16s %s\n' 'Schijf:' "$disk"
      printf '%-16s %s\n' 'Naam:' "${name:-Onbekend}"
      printf '%-16s %s\n' 'Activeringspunt:' "$mountpoint"
      printf '%-16s %s\n' 'UUID:' "$uuid"
      printf '%s' "$reset"
    else
      printf '%sOK%s\n' "$green" "$reset"
    fi
  done

  sleep 2
done
