#
# Tool to extract atp files from the asset server cache.
# Usage: python2 atp-extract.py -[lxa] [filename]
#
# cd into the c:\Users\BettySpaghetti\AppData\Roaming\High Fidelity\assignment-client\assets dir
# run 'python2 atp-extract.py -l' to list all files
# run 'python2 atp-extract.py -x file' to extract that particular file to the current directory.
# run 'python2 atp-extract.py -a' to extract all files.
#

import os, json, sys, shutil

def loadMapFile(filename):
    with open(filename, 'r') as f:
        return json.load(f)

def extractFile(assetMap, filename):
    if filename != None:
        assetFilename = assetMap.get("/" + filename)
        if assetFilename != None:
            dir = os.path.dirname(filename)
            if dir != "" and not os.path.exists(dir):
                os.makedirs(dir)
            shutil.copy("files/" + assetFilename, filename)
            return True
    return False

option = sys.argv[1]
if option == '-l':
    assetMap = loadMapFile("map.json")
    for key, value in assetMap.iteritems():
        print key[1:]
elif option == '-x':
    assetMap = loadMapFile("map.json")
    outputFilename = sys.argv[2]
    if not extractFile(assetMap, outputFilename):
        print("Error could not extract file: \"" + outputFilename + "\"")
elif option == '-a':
    assetMap = loadMapFile("map.json")
    for key, value in assetMap.iteritems():
        print("Extracting " + key[1:])
        extractFile(assetMap, key[1:])
else:
    print("unsuported option \"" + option + "\"")