44import subprocess
55import sys
66
7+ build_dir = os .getenv ("CRUNCH_BUILD_DIR" , "build" )
8+ executable_extension = os .getenv ("CRUNCH_EXE_EXTENSION" , "" )
9+ executable_runner = os .getenv ("CRUNCH_EXE_RUNNER" )
10+
711def print_command (command_list ):
812 print ("running: " + " " .join (command_list ), file = sys .stderr )
913
1014def convert_path (path ):
15+ if path .startswith ("build/" ):
16+ path = build_dir + path [len ("build" ):]
1117 return path .replace ("/" , os .path .sep )
1218
1319def run (command_list ):
20+ if executable_runner :
21+ command_list = executable_runner .split (" " ) + command_list
1422 print_command (command_list )
1523 returncode = subprocess .run (command_list ).returncode
1624 if returncode :
1725 exit (returncode )
1826
1927def mkdir (path ):
28+ path = convert_path (path )
2029 print_command (["mkdir" , path ])
2130 os .makedirs (path , exist_ok = True )
2231
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"
32+ def get_build_dir ():
2833 windows_build_dir = os .path .join (build_dir , "Release" )
2934 if os .path .exists (windows_build_dir ):
30- build_dir = windows_build_dir
35+ return windows_build_dir
36+ return build_dir
3137
32- executable_path = os .path .join (build_dir , executable_name )
38+ def get_executable_path (executable_name ):
39+ executable_name += executable_extension
40+ build_dir = get_build_dir ()
41+ return os .path .join (build_dir , executable_name )
42+
43+ def crunch (input_path , output_path , options = []):
44+ executable_path = get_executable_path ("crunch" )
3345 command_list = [executable_path ] + options
3446
3547 if input_path :
@@ -39,8 +51,31 @@ def crunch(input_path, output_path, options=[]):
3951
4052 run (command_list )
4153
54+ def example (num , input_path , output_path , options = []):
55+ executable_path = get_executable_path ("example" + str (num ))
56+ command_list = [executable_path ]
57+
58+ if (num == 1 ):
59+ command_list += [options [0 ]]
60+ options = options [1 :]
61+
62+ if input_path :
63+ input_path = convert_path (input_path )
64+ command_list += [input_path ]
65+
66+ command_list += options
67+
68+ if output_path :
69+ output_path = convert_path (output_path )
70+ command_list += ["-out" , output_path ]
71+
72+ run (command_list )
73+
4274crunch (None , None , ["--help" ])
4375
76+ if "CRUNCH_SIMPLE_TEST" in os .environ .keys ():
77+ exit (0 )
78+
4479mkdir ("build/test/0" )
4580crunch ("test/unvanquished_64.png" , "build/test/0/unvanquished_64.crn" )
4681crunch ("test/unvanquished_64.png" , "build/test/0/unvanquished_64.dds" )
@@ -99,3 +134,17 @@ def crunch(input_path, output_path, options=[]):
99134
100135mkdir ("build/test/7" )
101136crunch ("test/black.jpg" , "build/test/7/black.crn" )
137+
138+ mkdir ("build/test/8" )
139+ example (1 , "test/unvanquished_64.png" , None , ["i" ])
140+ example (1 , "test/unvanquished_64.png" , "build/test/8/unvanquished_64.dds" , ["c" ])
141+
142+ mkdir ("build/test/9" )
143+ example (1 , "test/unvanquished_64.png" , "build/test/9/unvanquished_64.crn" , ["c" , "-crn" ])
144+ example (1 , "build/test/9/unvanquished_64.crn" , "build/test/9/unvanquished_64.dds" , ["d" ])
145+
146+ mkdir ("build/test/10" )
147+ example (2 , "build/test/9/unvanquished_64.crn" , "build/test/10/unvanquished_64.dds" )
148+
149+ mkdir ("build/test/11" )
150+ example (3 , "test/unvanquished_64.png" , "build/test/11/unvanquished_64.dds" )
0 commit comments