#!/usr/bin/env python3
import os
import io

resources = {}
resources_size = 0

os.chdir(os.path.dirname(__file__))
os.chdir('../src/')


def process_file(name):
    if name.endswith('.gitignore'):
        return
    if name.endswith('.py'):
        return
    if os.path.basename(name).startswith('.'):
        return
    with open(name, 'rb') as f:
        data = f.read()
        resources[name] = data
        print('processing file %s (%d bytes)' % (name, len(data)))
        global resources_size
        resources_size += len(data)


def process_dir_rec(dir):
    for name in os.listdir(dir):
        path = os.path.join(dir, name)
        if os.path.isfile(path):
            process_file(path)
        elif os.path.isdir(path):
            process_dir_rec(path)


process_dir_rec('trezor/res/')
for name in os.listdir('apps/'):
    path = os.path.join('apps/', name, 'res/')
    if os.path.isdir(path):
        process_dir_rec(path)

resfile = 'trezor/res/resources.py'

bio = io.StringIO()
bio.write('resdata = {\n')
for k in sorted(resources.keys()):
    bio.write("    '%s': %s,\n" % (k, resources[k]))
bio.write('}\n')

try:
    with open(resfile, 'r') as f:
        stale = f.read()
except:
    stale = None

fresh = bio.getvalue()

if stale != fresh:
    with open(resfile, 'wt') as f:
        f.write(fresh)
    print('written %s with %d entries (total %d bytes)' %
          (resfile, len(resources), resources_size))
else:
    print('continuing with %s, no changes detected' % (resfile))