#!python

import os
import datetime

from utils import menuConverter
from utils import menuDownloader
from utils import menuLinkScraper
from utils import menuParser
from utils import menuPrinter
from utils.config import config
from utils.exceptions import InvalidDateException


def prepare_menu():
    # Scrape link to current menu pdf from meyle website
    menu_url = menuLinkScraper.get_menu_link()

    # Download menu and get file name
    menuDownloader.download_menu(menu_url, config['pdf_path'])

    # Convert pdf to txt
    menuConverter.convert_menu(config['pdf_path'], config['flattened_pdf_path'], config['txt_path'])

    # Return menu
    return menuParser.parse_menu(config['txt_path'])


if __name__ == '__main__':
    current_date = datetime.date.today()
    try:
        menu = menuParser.parse_menu(config['txt_path'])
        if current_date < menu.valid_from.date or current_date > menu.valid_to.date:
            raise InvalidDateException
    except (FileNotFoundError, InvalidDateException):
        menu = prepare_menu()

    # Print today's menu
    menuPrinter.print_menu(menu, current_date)
