# name: generate_json (embeds addincharts resources into a single json file)
# created: Nov 07, 2018
# Author: Vasileios Papadopoulos
# Company: Sendsteps BV

#!/usr/bin/python
import fnmatch
import os
import json
import base64
import io
#directory root
root = os.path.dirname(os.path.realpath(__file__)) + '/'

#json string format
jsonData = {}

#find html files
files = fnmatch.filter(os.listdir(root), "*.html")
#append css
files.extend(fnmatch.filter(os.listdir(root), "*.css"))
#append js
files.extend(fnmatch.filter(os.listdir(root), "*.js"))
#append png
files.extend(fnmatch.filter(os.listdir(root), "*.png"))
#append LICENSE file
files.extend(fnmatch.filter(os.listdir(root), "LICENSE"))

#iterate through files and append to json dictionary
#use file extension as key
for f in files:
    tokens = os.path.splitext(f)
    name = tokens[0]
    ext = tokens[1]
    ext = ext.replace(".","")
    if ext != 'png':
        with io.open(root + f, 'r', encoding='utf8') as content_file:
            jsonData[f]= content_file.read()
    else: #png image are processed differently
        with io.open(root + f, "rb") as imageFile:
            str = base64.b64encode(imageFile.read())
            jsonData[f]= str.decode('utf-8')


#flush to disk
with io.open('addincharts-new.json', 'w') as outfile:
   outfile.write(unicode(json.dumps(jsonData, ensure_ascii=False)))
