44import subprocess
55import sys
66
7+ if "CRUNCH_BUILD_DIR" in os .environ .keys ():
8+ build_dir = os .environ ["CRUNCH_BUILD_DIR" ]
9+ else :
10+ build_dir = "build"
11+
12+ if "CRUNCH_RUNNER" in os .environ .keys ():
13+ crunch_runner = os .environ ["CRUNCH_RUNNER" ]
14+ else :
15+ crunch_runner = None
16+
17+ if "CRUNCH_EXTENSION" in os .environ .keys ():
18+ crunch_extension = os .environ ["CRUNCH_EXTENSION" ]
19+ else :
20+ crunch_extension = None
21+
722def print_command (command_list ):
823 print ("running: " + " " .join (command_list ), file = sys .stderr )
924
1025def convert_path (path ):
26+ if path .startswith ("build/" ):
27+ path = build_dir + path [len ("build" ):]
1128 return path .replace ("/" , os .path .sep )
1229
1330def run (command_list ):
31+ if crunch_runner :
32+ command_list = crunch_runner .split (" " ) + command_list
1433 print_command (command_list )
1534 returncode = subprocess .run (command_list ).returncode
1635 if returncode :
1736 exit (returncode )
1837
1938def mkdir (path ):
39+ path = convert_path (path )
2040 print_command (["mkdir" , path ])
2141 os .makedirs (path , exist_ok = True )
2242
23- def crunch (input_path , output_path , options = []):
24- executable_extension = ["" , ".exe" ][sys .platform == 'win32' ]
25- executable_name = "crunch" + executable_extension
26-
27- build_dir = "build"
43+ def get_build_dir ():
2844 windows_build_dir = os .path .join (build_dir , "Release" )
2945 if os .path .exists (windows_build_dir ):
30- build_dir = windows_build_dir
46+ return windows_build_dir
47+ return build_dir
3148
32- executable_path = os .path .join (build_dir , executable_name )
49+ def get_executable_path (executable_name ):
50+ if crunch_extension :
51+ executable_extension = crunch_extension
52+ elif sys .platform == "win32" :
53+ executable_extension = ".exe"
54+ else :
55+ executable_extension = ""
56+
57+ executable_name += executable_extension
58+ build_dir = get_build_dir ()
59+ return os .path .join (build_dir , executable_name )
60+
61+ def crunch (input_path , output_path , options = []):
62+ executable_path = get_executable_path ("crunch" )
3363 command_list = [executable_path ] + options
3464
3565 if input_path :
@@ -39,8 +69,31 @@ def crunch(input_path, output_path, options=[]):
3969
4070 run (command_list )
4171
72+ def example (num , input_path , output_path , options = []):
73+ executable_path = get_executable_path ("example" + str (num ))
74+ command_list = [executable_path ]
75+
76+ if (num == 1 ):
77+ command_list += [options [0 ]]
78+ options = options [1 :]
79+
80+ if input_path :
81+ input_path = convert_path (input_path )
82+ command_list += [input_path ]
83+
84+ command_list += options
85+
86+ if output_path :
87+ output_path = convert_path (output_path )
88+ command_list += ["-out" , output_path ]
89+
90+ run (command_list )
91+
4292crunch (None , None , ["--help" ])
4393
94+ if "CRUNCH_SIMPLE_TEST" in os .environ .keys ():
95+ exit (0 )
96+
4497mkdir ("build/test/0" )
4598crunch ("test/unvanquished_64.png" , "build/test/0/unvanquished_64.crn" )
4699crunch ("test/unvanquished_64.png" , "build/test/0/unvanquished_64.dds" )
@@ -99,3 +152,17 @@ def crunch(input_path, output_path, options=[]):
99152
100153mkdir ("build/test/7" )
101154crunch ("test/black.jpg" , "build/test/7/black.crn" )
155+
156+ mkdir ("build/test/8" )
157+ example (1 , "test/unvanquished_64.png" , None , ["i" ])
158+ example (1 , "test/unvanquished_64.png" , "build/test/8/unvanquished_64.dds" , ["c" ])
159+
160+ mkdir ("build/test/9" )
161+ example (1 , "test/unvanquished_64.png" , "build/test/9/unvanquished_64.crn" , ["c" , "-crn" ])
162+ example (1 , "build/test/9/unvanquished_64.crn" , "build/test/9/unvanquished_64.dds" , ["d" ])
163+
164+ mkdir ("build/test/10" )
165+ example (2 , "build/test/9/unvanquished_64.crn" , "build/test/10/unvanquished_64.dds" )
166+
167+ mkdir ("build/test/11" )
168+ example (3 , "test/unvanquished_64.png" , "build/test/11/unvanquished_64.dds" )
0 commit comments