#!/usr/bin/python3
# Auto-calculate IIAB + EduPack disk space needs, in advance [& design review]
# https://github.com/iiab/iiab/pull/3594

import os, sys, syslog
from datetime import date
import pwd, grp
import shutil
import argparse
import sqlite3
import iiab.iiab_lib as iiab
import iiab.adm_lib as adm
import requests
import json
import importlib
from functools import reduce
iiab_item_size = importlib.import_module("iiab-item-size")

def main():
    parser = argparse.ArgumentParser(description="Read menu file for get size.")
    parser.add_argument("menuFile", help="Is the menu file.")
    # menu_dir
    args =  parser.parse_args()

    menu_file = args.menuFile
    if not os.path.exists(menu_file):
        print('Menu file ' + menu_file + ' not found.')
        exit(1)

    total_size= content_from_menu(menu_file)

    print('total: ',iiab.human_readable(total_size))
    print(f'total (bytes): ', total_size)

    sys.exit()

def content_from_menu(menu_file):
    menu = adm.read_json(menu_file)
    items = iiab_item_size.get_items_size(menu["menu_items_1"])
    total_size = reduce(lambda accumulator,item: accumulator+int(item['size']), items, 0)    
    return total_size

# Now start the application
if __name__ == "__main__":
    main()