1- import os
2- import sys
3- import logging
4-
5- from . import BiasKernel , KernelTarget , batch_process , guess_paradigm , _VERSION
6- from .gui import start_gui
1+ from .cli import start_cli
72
83if __name__ == '__main__' :
9- print (f'+9ms or Null? v{ _VERSION } ' )
10-
11- if len (sys .argv ) <= 1 :
12- print ('No path to simfile or pack provided. Entering GUI mode...' )
13- start_gui ()
14- print ('Exiting GUI mode. Thank you for playing!' )
15- else :
16- print ('Entering CLI mode...' )
17-
18- root_path = sys .argv [1 ]
19-
20- # Verify existence of root path
21- if not os .path .isdir (root_path ):
22- sys .exit (f'Root directory doesn\' t exist: { root_path } ' )
23- else :
24- print (f"Root directory exists: { root_path } " )
25-
26- # Verify existence of root path
27- report_path = os .path .join (root_path , '__bias-check' )
28- if not os .path .isdir (report_path ):
29- try :
30- os .makedirs (report_path )
31- print (f"Report directory created: { report_path } " )
32- except Exception as e :
33- sys .exit (f'Report directory can\' t be created: { report_path } ' )
34- else :
35- print (f"Report directory exists: { report_path } " )
36-
37- # Set up logging
38- log_path = os .path .join (report_path , 'nine-or-null.log' )
39- log_fmt = logging .Formatter (
40- '[%(asctime)s.%(msecs)03d] %(levelname)-8s %(message)s' ,
41- datefmt = '%Y-%m-%d %H:%M:%S'
42- )
43- logging .basicConfig (
44- filename = log_path ,
45- encoding = 'utf-8' ,
46- level = logging .INFO
47- )
48- logging .getLogger ().addHandler (logging .StreamHandler ())
49- for handler in logging .getLogger ().handlers :
50- handler .setFormatter (log_fmt )
51-
52- # Default parameters.
53- params = {}
54- params ['root_path' ] = root_path
55- params ['report_path' ] = report_path
56- params ['consider_null' ] = True
57- params ['consider_p9ms' ] = True
58- params ['tolerance' ] = 3.0
59- params ['fingerprint_ms' ] = 50
60- params ['window_ms' ] = 10
61- params ['step_ms' ] = 0.20
62- params ['kernel_target' ] = KernelTarget .DIGEST
63- params ['kernel_type' ] = BiasKernel .RISING
64- params ['magic_offset' ] = 2.0
65-
66- # Recall parameters.
67- header_str = f'+9ms or Null? v{ _VERSION } (CLI)'
68- logging .info (f"{ '=' * 20 } { header_str :^32s} { '=' * 20 } " )
69- logging .info ('Parameter settings:' )
70- for k , v in params .items ():
71- logging .info (f'\t { k } = { v } ' )
72-
73- fingerprints = batch_process (** params )
74-
75- logging .info ('-' * 72 )
76- logging .info (f"Sync bias report: { len (fingerprints )} fingerprints processed in { root_path } " )
77-
78- paradigm_count = {}
79- for paradigm in ['+9ms' , 'null' , '????' ]:
80- paradigm_map = {k : v for k , v in fingerprints .items () if guess_paradigm (v ['bias_result' ]) == paradigm }
81- logging .info (f"Files sync'd to { paradigm } : { len (paradigm_map )} " )
82- for k , v in paradigm_map .items ():
83- logging .info (f"\t { k :>50s} " )
84- logging .info (f"\t \t derived sync bias = { v ['bias_result' ]:+0.1f} ms" )
85- paradigm_count [paradigm ] = len (paradigm_map )
86-
87- paradigm_most = sorted ([k for k in paradigm_count ], key = lambda k : paradigm_count .get (k , 0 ))
88- logging .info ('=' * 72 )
89- logging .info (f'Pack sync paradigm: { paradigm_most [- 1 ]} ' )
90- logging .info ('-' * 72 )
91-
92- # Done!
93- print ('Exiting CLI mode. Thank you for playing!' )
94-
4+ start_cli ()
0 commit comments