# coding: utf-8 import sys,getopt from base64 import * def usage(): print "usage:" print " CsdrUpdater.py [OPTION] BinaryFileName" print " [OPTION]" print " -i --intermediate= : Input editable .csdr file name, otherwise use DefaultShader.csdr." print " -o --output= : Input output file name." print " -h --help : Print help message." print "" def main(): try: options, arguments = getopt.getopt(sys.argv[1:], "i:o:s:h:", ["intermediate=", "output=", "shader=", "help="]) except getopt.GetoptError: sys.exit() binaryFileName = None intermediateFileName = None shaderName = None for option, argument in options: if option in ("-i", "--intermediate"): intermediateFileName = argument if option in ("-o", "--output"): shaderName = argument if option in ("-h", "--help"): usage() sys.exit() if arguments: binaryFileName = arguments[0] else: print "Please input binary file name." sys.exit() if intermediateFileName == None: intermediateFileName = "DefaultShader.csdr" try: intermediateInput = open(intermediateFileName, 'rb') binaryInput = open(binaryFileName, 'rb') except IOError as error: print(error) sys.exit() binary = binaryInput.read() base64Binary = b64encode(binary) binaryFileNameSplit = binaryFileName.split('.') if shaderName == None: shaderName = binaryFileNameSplit[0] intermediate = intermediateInput.read() if intermediate.find("") < 0: print("Intermediate file has no Tag.") sys.exit() elif intermediate.find("") < 0: print("Intermediate file has no Tag.") sys.exit() frontIntermediate = intermediate.split("")[0] backIntermediate = intermediate.split("")[1] csdrString = frontIntermediate + "" + base64Binary + "" + backIntermediate if not shaderName.endswith(".csdr") and not shaderName.endswith(".cmdl"): shaderName += ".csdr" try: output = open(shaderName, 'wb') output.write(csdrString) except: print("Cannot write shader file.") if __name__ == "__main__": if len(sys.argv) == 1: exit(1) else: main()