#!/bin/bash

# Root level functions requiring password for mx-snapshot

cleanup() {
    pkill mksquashfs
    if [[ -x /usr/sbin/installed-to-live ]]; then
        /usr/sbin/installed-to-live cleanup
    else
        /usr/bin/installed-to-live cleanup
    fi
}

cleanup_overlay() {
    local app_name overlay_base lower_dir
    app_name=$1
    [[ -z "$app_name" ]] && exit 2
    overlay_base="/run/${app_name}/bind-root-overlay"
    lower_dir="${overlay_base}/lower"
    local overlay_root="${overlay_base}/root"

    mountpoint -q "$overlay_root" && umount --recursive "$overlay_root"
    mountpoint -q "$lower_dir" && umount --recursive "$lower_dir"
    [[ -L "$overlay_base" ]] && exit 3
    [[ -d "$overlay_base" && "$overlay_base" == /run/*/bind-root-overlay ]] && rm -rf "$overlay_base"
}

copy_log() {
    [[ -f /var/log/mx-snapshot.log ]] && mv /var/log/mx-snapshot.log /var/log/mx-snapshot.log.old
    cp /tmp/mx-snapshot.log /var/log
}

datetime_log() {
    date +"%Y%m%d_%H%M" > /etc/snapshot_created
}

kill_mksquashfs() {
    pkill mksquashfs
}

drop_caches() {
    echo 1 > /proc/sys/vm/drop_caches
}

chown_conf() {
    FILE_NAME="/home/$(logname)/.config/MX-Linux/mx-snapshot.conf"
    [[ -f "$FILE_NAME" ]] && chown $(logname): "$FILE_NAME"
}

main() {
case "$1" in
    chown_conf)
        chown_conf;;
    cleanup)
        cleanup;;
    cleanup_overlay)
        cleanup_overlay "$2";;
    copy_log)
        copy_log;;
    datetime_log)
        datetime_log;;
    kill_mksquashfs)
        kill_mksquashfs;;
    drop_caches)
        drop_caches;;
esac
}

main "$@"
