import os, time

class FontType:
    BOLD = '\033[1m'

class TextColor:
    RESET = '\033[0m'
    BLACK = '\033[30m'
    RED = '\033[31m'
    GREEN = '\033[32m'
    YELLOW = '\033[33m'
    BLUE = '\033[34m'
    MAGENTA = '\033[35m'
    CYAN = '\033[36m'
    WHITE = '\033[37m'

    RIGHT_BLACK = '\033[90m'
    RIGHT_RED = '\033[91m'
    RIGHT_GREEN = '\033[92m'
    RIGHT_YELLOW = '\033[93m'
    RIGHT_BLUE = '\033[94m'
    RIGHT_MAGENTA = '\033[95m'
    RIGHT_CYAN = '\033[96m'
    RIGHT_WHITE = '\033[97m'

class BackgroundColor:
    BLACK = '\033[40m'
    RED = '\033[41m'
    GREEN = '\033[42m'
    YELLOW = '\033[43m'
    BLUE = '\033[44m'
    MAGENTA = '\033[45m'
    CYAN = '\033[46m'
    WHITE = '\033[47m'

    RIGHT_BLACK = '\033[100m'
    RIGHT_RED = '\033[101m'
    RIGHT_GREEN = '\033[102m'
    RIGHT_YELLOW = '\033[103m'
    RIGHT_BLUE = '\033[104m'
    RIGHT_MAGENTA = '\033[105m'
    RIGHT_CYAN = '\033[106m'
    RIGHT_WHITE = '\033[107m'

print(BackgroundColor.WHITE + '                                                        ' + TextColor.RESET)
print(TextColor.BLACK + BackgroundColor.WHITE + FontType.BOLD + "      >>> HandsON BuildHat Auto Installer 1.1 <<<       " + TextColor.RESET)
print(BackgroundColor.WHITE + '                                                        ' + TextColor.RESET)

time.sleep(0.5)

print(TextColor.RIGHT_GREEN + FontType.BOLD + '[HandsON Installer] ' + TextColor.RIGHT_YELLOW + 'Start Dependency Install...' + TextColor.RESET)

os.system("sudo apt update")
os.system("sudo apt upgrade -y")
os.system("sudo apt install -y python3-pip")
os.system("sudo apt install -y python3-serial")
os.system("pip3 install --break-system-packages HandsON-BuildHat-API")

print(TextColor.RIGHT_GREEN + FontType.BOLD + '[HandsON Installer] ' + TextColor.RIGHT_YELLOW + 'Dependency installation complete' + TextColor.RESET)
time.sleep(0.5)
print(TextColor.RIGHT_GREEN + FontType.BOLD + '[HandsON Installer] ' + TextColor.RIGHT_YELLOW + 'Start setting up your Raspberry Pi environment' + TextColor.RESET)
time.sleep(0.5)

# print('\n' + TextColor.RIGHT_GREEN + FontType.BOLD + '[HandsON Installer] ' + TextColor.WHITE + 'Login shell은 비활성화, hardware serial은 활성화 해주셔야 합니다.' + TextColor.RESET)
# print(TextColor.RIGHT_GREEN + FontType.BOLD + '[HandsON Installer] ' + TextColor.WHITE + '위 사항을 확인하였다면 ENTER 키를 누르십시오.' + TextColor.RESET)
# input()
# os.system('sudo raspi-config nonint do_serial 1')

os.system("sudo sed -i 's/console=serial0,[0-9]\+ //g' /boot/firmware/cmdline.txt")
os.system("echo 'enable_uart=1' | sudo tee -a /boot/firmware/config.txt")

print(TextColor.RIGHT_GREEN + FontType.BOLD + '[HandsON Installer] ' + TextColor.RIGHT_YELLOW + 'Raspberry Pi Environment Settings Complete' + TextColor.RESET)
time.sleep(0.5)
for i in range(0, 6):
    print('\r' + TextColor.RIGHT_GREEN + FontType.BOLD + '[HandsON Installer] ' + TextColor.RIGHT_YELLOW + f'The Raspberry Pi will restart within {5-i} seconds... ' + TextColor.RESET, end='', flush=True)
    time.sleep(1)
print()
os.system("sudo reboot")