# 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()