2828from .model import Config
2929from .parser import Parser
3030from .uml_builder import UmlBuilder
31+ from . import error
3132
3233VERSION = pkg_resources .require ("umlsequence2" )[0 ].version
3334
@@ -65,7 +66,7 @@ def generate(input_fp: TextIO, output_path: str, percent_zoom: int,
6566 convert (path , output_path , format )
6667
6768
68- def main () -> None :
69+ def parse_args () -> argparse . Namespace :
6970 description , epilog = [each .strip () for each in __doc__ .split ('-----' )[:2 ]]
7071
7172 parser = argparse .ArgumentParser (description = description , epilog = epilog )
@@ -126,18 +127,17 @@ def main() -> None:
126127 args = parser .parse_args ()
127128 args .format = args .format .lower ()
128129
129- # version?
130- if args .version :
131- print ('umlsequence2' , VERSION )
132- sys .exit (0 )
133-
134130 # parse back config modifiers args
135131 conf_args = {k :args .__dict__ [k ] for k in conf_keys
136132 if args .__dict__ [k ] is not None }
137133 if conf_args :
138134 cfg .update (conf_args )
139135 set_config (Config (** cfg ))
140136
137+ return args
138+
139+
140+ def run (args : argparse .Namespace ) -> None :
141141 # treat input
142142 if args .INPUT_FILE is None :
143143 inp = sys .stdin
@@ -158,7 +158,7 @@ def main() -> None:
158158 generate (inp , name , args .percent_zoom , args .debug ,
159159 args .background_color , args .format )
160160 print (f'{ sys .argv [0 ]} : generated { name } ' , file = sys .stderr )
161- sys . exit ( 0 )
161+ return
162162
163163 # treat output
164164 if args .output_file is None :
@@ -181,4 +181,20 @@ def main() -> None:
181181 # output to file
182182 generate (inp , name , args .percent_zoom , args .debug ,
183183 args .background_color , args .format )
184+
185+
186+ def main () -> None :
187+ args = parse_args ()
188+
189+ # version?
190+ if args .version :
191+ print ('umlsequence2' , VERSION )
192+ sys .exit (0 )
193+
194+ try :
195+ run (args )
196+ except model .UmlSequenceError as e :
197+ error .print_error (e )
198+ sys .exit (1 )
199+
184200 sys .exit (0 )
0 commit comments