ldcheck.py

changeset 109
b627f8963a84
parent 100
62759e5c4554
child 113
8c2ca8d368d4
equal deleted inserted replaced
108:09ffafb154a8 109:b627f8963a84
108 ) 108 )
109 messages.append(message) 109 messages.append(message)
110 return '\n'.join(messages) 110 return '\n'.join(messages)
111 111
112 if __name__ == '__main__': 112 if __name__ == '__main__':
113 from sys import argv 113 from sys import argv, stderr, exit
114 parser = argparse.ArgumentParser() 114 parser = argparse.ArgumentParser()
115 parser.add_argument('filename') 115 parser.add_argument('filename')
116 parser.add_argument('--list', 116 parser.add_argument('--list',
117 action = ListProblemsAction, 117 action = ListProblemsAction,
118 help = 'lists all possible problem types and exit', 118 help = 'lists all possible problem types and exit',
149 if args.color: 149 if args.color:
150 try: 150 try:
151 import colorama 151 import colorama
152 colorama.init() 152 colorama.init()
153 except ImportError: 153 except ImportError:
154 from sys import stderr
155 print('Use of --color requires the colorama module, disabling colours', file = stderr) 154 print('Use of --color requires the colorama module, disabling colours', file = stderr)
156 args.color = False 155 args.color = False
157 if args.subfile: 156 if args.subfile:
158 import filecache 157 import filecache
159 cache = filecache.SubfileCache( 158 cache = filecache.SubfileCache(
165 else: 164 else:
166 print('Flat dimensions:', repr(subfile.flatness)) 165 print('Flat dimensions:', repr(subfile.flatness))
167 print('Description:', repr(subfile.description)) 166 print('Description:', repr(subfile.description))
168 print('Contains studs:', repr(subfile.has_studs)) 167 print('Contains studs:', repr(subfile.has_studs))
169 else: 168 else:
170 with open(args.filename, 'rb') as file: 169 try:
171 from os.path import basename 170 with open(args.filename, 'rb') as file:
172 model = parse.read_ldraw( 171 from os.path import basename
173 file, 172 model = parse.read_ldraw(
174 name = basename(args.filename), 173 file,
175 ldraw_directories = config['libraries']) 174 name = basename(args.filename),
176 if args.dump: 175 ldraw_directories = config['libraries'])
177 print('header: ' + type(model.header).__name__) 176 if args.dump:
178 for key in sorted(dir(model.header)): 177 print('header: ' + type(model.header).__name__)
179 if not key.startswith('__'): 178 for key in sorted(dir(model.header)):
180 print('\t' + key + ': ' + repr(getattr(model.header, key))) 179 if not key.startswith('__'):
181 for i, entry in enumerate(model.body): 180 print('\t' + key + ': ' + repr(getattr(model.header, key)))
182 if model.header.valid and i == model.header_size: 181 for i, entry in enumerate(model.body):
183 print('--------- End of header') 182 if model.header.valid and i == model.header_size:
184 print(entry) 183 print('--------- End of header')
185 elif args.rebuild: 184 print(entry)
186 for entry in model.body: 185 elif args.rebuild:
187 print(entry.textual_representation(), end = '\r\n') 186 for entry in model.body:
188 else: 187 print(entry.textual_representation(), end = '\r\n')
189 from testsuite import load_tests, check_model 188 else:
190 test_suite = load_tests() 189 from testsuite import load_tests, check_model
191 report = check_model(model, test_suite) 190 test_suite = load_tests()
192 print(format_report(report, model, test_suite, use_colors = args.color)) 191 report = check_model(model, test_suite)
192 print(format_report(
193 report,
194 model,
195 test_suite,
196 use_colors = args.color
197 ))
198 except FileNotFoundError:
199 print(str.format(
200 'no such file: {filename!r}',
201 filename = args.filename
202 ), file = stderr)
203 exit(1)

mercurial