#!/bin/sh

set -e

action=$(dialog --menu "Advanced options, consider your warranty VOID!" 0 0 0 \
    shell           "Drop to shell" \
    instance        "Instance maintenance and recovery" \
    subvol          "Delete instances/templates" \
    2>&1 >$(tty))
clear

case $action in
    shell)
        sh
    ;;
    instance)
        export BUTTERKNIFE_PARTITION=$(butterknife-select-btrfs-filesystem 2>&1 >$(tty))

        # Probe instances
        pool_mountpoint=$(mktemp -d)
        subvols=$(mktemp)
        mount $BUTTERKNIFE_PARTITION $pool_mountpoint -o subvol=/
        for subvol in $(ls $pool_mountpoint | grep "^@root:" | sort -r); do
            echo "$subvol \"\""
        done > $subvols
        if [ -d $pool_mountpoint/deployments ]; then
            for timestamp in $(ls $pool_mountpoint/deployments | sort -r); do
                echo "deployments/$timestamp \"\""
            done >> $subvols
        fi
        umount $pool_mountpoint
        rmdir $pool_mountpoint

        # Select instance
        export BUTTERKNIFE_DEPLOY_SUBVOL=$(dialog \
            --menu "Select instance" 0 0 0 \
            --file $subvols 2>&1 >$(tty))

        # TODO: Export BUTTERKNIFE_DISK for grub-install MBR
        instance_mountpoint=$(mktemp -d)
        mount $BUTTERKNIFE_PARTITION -o subvol=$BUTTERKNIFE_DEPLOY_SUBVOL $instance_mountpoint
        mount --bind /dev $instance_mountpoint/dev
        mount --bind /sys $instance_mountpoint/sys
        mount --bind /proc $instance_mountpoint/proc
        if [ -d $instance_mountpoint/var/lib/butterknife/persistent ]; then
            mount --bind /proc $instance_mountpoint/var/lib/butterknife/persistent
        fi
        clear
        echo "Mounted $BUTTERKNIFE_PARTITION$BUTTERKNIFE_DEPLOY_SUBVOL at $instance_mountpoint"
        echo "Chrooting into $instance_mountpoint"
        hostname $(cat $instance_mountpoint/etc/hostname)
        cat /etc/resolv.conf > $instance_mountpoint/etc/resolv.conf
        # Export sensible PATH
        export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
        chroot $instance_mountpoint butterknife-maintenance
        umount -a
        rmdir $instance_mountpoint
    ;;
    subvol)
        BUTTERKNIFE_PARTITION=$(butterknife-select-btrfs-filesystem 2>&1 >$(tty))
        mountpoint=$(mktemp -d)
        mount $BUTTERKNIFE_PARTITION -o subvol=/ $mountpoint
        subvols=$(mktemp)
        for subvol in $(btrfs subvol list $mountpoint | cut -d ' ' -f 9 | sort -r); do
            echo "$subvol \"\""
        done > $subvols
        selected_subvol=$(dialog --menu "Select subvolume to delete on $BUTTERKNIFE_PARTITION" 0 0 0 \
            --file $subvols 2>&1 >$(tty))
        rm -f $subvols
        btrfs subvol delete -c $mountpoint/$selected_subvol
        umount $mountpoint
        rmdir $mountpoint
    ;;
esac

