# This file is meant to sit in ~ for use from all shells.
from invoke import task

from datetime import datetime as dt
import os

HOME = os.path.expanduser('~')
TODAY = dt.now().strftime('%Y.%m.%d')
PAYROLL = os.environ.get('PAYROLL')
SCHOOL = f"{HOME}/School"

expect_URLs = [
'budget',
'cu',
'allowance'
]


URLS = {}
for url in expect_URLs:
    key = f'URL_{url.upper()}'
    result = os.environ.get(key)
    if not result:
        raise ValueError(f'Missing expected {key} in environment.')
    URLS[url] = result

def browse(c, url):
    c.run(f"librefox {url}", asynchronous=True)


def code(c, path):
    c.run(f"codium {path}")


def folder(c, path):
    c.run(f"nemo {path}")

@task
def go(c, bookmark):
    var = f'URL_{bookmark.upper()}'
    url = os.environ.get(var)
    browse(c, url)

@task
def cloud_panel(c):
    go(c, 'cloud')

@task
def debug(c):
    result = c.run('which minetest')
    print(result.ok)


@task
def fix_mouse(c):
    c.run('xinput --disable 18')
    c.run('xinput --enable 18')


@task
def fix_invoke_complete(c):
    c.run('invoke --print-completion-script bash > ~/.invoke-complete.sh')

@task
def temp(c):
    c.run('sensors')



def term(c, path):
    c.run(f'konsole --separate --workdir {path}', asynchronous=True)

def browse(c, url):
    c.run(f"librewolf {url}", asynchronous=True)


def code(c, path):
    c.run(f"codium {path}")


def folder(c, path):
    c.run(f'dolphin {path}', asynchronous=True)
    # c.run(f"nemo {path}")


@task
def debug(c):
    result = c.run('which minetest')
    print(result.ok)


@task
def allowance(c):
    browse(c, URLS['allowance'])

@task
def payroll_folders(c):
    # For copying the latest file in
    folder(c, f"{HOME}/pixel7adocuments")
    folder(c, f"{PAYROLL}/data/payroll_inbox")
    folder(c, f"{PAYROLL}")


@task
def payroll(c):

    allowance(c)
    payroll_folders(c)

    # For editing files
    code(c, f"{PAYROLL}")
    payroll_jupyter(c)

@task
def payroll_jupyter(c):

    # For running the payroll scripts
    c.run(f"cd {PAYROLL};{HOME}/envs/jupyter/bin/jupyter-lab")


@task()
def screenshare(c):
    browse(c, 'https://app.screego.net/#/')
    c.run('dino')

@task
def show_free_space(c):
    c.run('df -h | grep G')  # We only care about disks measured in G

@task()
def free_disk_space(c, ruthless=False):
    show_free_space(c)
    c.run('podman container cleanup --all --rm')
    # Dolphin Trash ...should regenerate
    c.run(f'sudo rm -rf {HOME}/.local/share/Trash')
    # c.run(f'rm {HOME}/Downloads/*.iso')
    c.run('sudo apt-get autoclean') # Remove useless apt cache
    if ruthless:
        c.run(f'rm -rf {HOME}/Downloads/*')
        c.run('sudo apt-get clean') # Remove all apt cache
    show_free_space(c)

@task
def assign_school(c):
    term(c, f'{SCHOOL}')

@task
def mod_luanti(c):
    print("https://rubenwardy.com/minetest_modding_book/en/quality/luacheck.html")
    term(c, f'{HOME}/.var/app/net.minetest.Minetest/.minetest')


@task
def budget(c):
    browse(c, BUDGET_URL)
    browse(c, CU_URL)


@task
def get_drive_info(c):
    # List non-squash, non-tmp drives.
    c.run('df -x squashfs -x tmpfs')
    c.run('ls /dev/disk/by-label')


