4747 get_log_file_path ,
4848)
4949from plain2code_state import RunState
50- from plain2code_utils import print_dry_run_output
50+ from plain2code_utils import format_duration_hms , print_dry_run_output
5151from system_config import system_config
5252from tui .plain2code_tui import Plain2CodeTUI
5353
5454DEFAULT_TEMPLATE_DIRS = importlib .resources .files ("standard_template_library" )
5555RENDER_THREAD_SHUTDOWN_TIMEOUT = 0.7
5656
5757
58+ def print_exit_summary (
59+ run_state : RunState ,
60+ spec_filename : str ,
61+ ) -> None :
62+ console .quiet = False
63+ """Print render outcome after the TUI exits (terminal restored)."""
64+ msg = "\n [#79FC96]✓ rendering completed\n \n " if run_state .render_succeeded else "[#FF6B6B]✗ rendering failed\n \n "
65+ msg += f" [#8E8F91]render id:\t \t \t [#FFFFFF]{ run_state .render_id } \n "
66+ msg += f" [#8E8F91]input file:\t \t \t [#FFFFFF]{ spec_filename } \n "
67+ msg += f" [#8E8F91]generated code folder:\t [#FFFFFF]{ run_state .render_generated_code_path or '-' } \n \n "
68+ msg += f"[#8E8F91]functionalities [#FFFFFF]{ run_state .rendered_functionalities } [#8E8F91]used credits [#FFFFFF]{ run_state .rendered_functionalities } [#8E8F91]render time [#FFFFFF]{ format_duration_hms (run_state .render_time_accumulated )} \n "
69+ console .info (msg )
70+ console .quiet = True
71+
72+
5873def get_render_range (render_range , plain_source ):
5974 render_range = render_range .split ("," )
6075 range_end = render_range [1 ] if len (render_range ) == 2 else render_range [0 ]
@@ -186,8 +201,6 @@ def _check_connection(codeplainAPI: codeplain_api.CodeplainAPI):
186201def render (args , run_state : RunState , event_bus : EventBus ): # noqa: C901
187202 template_dirs = file_utils .get_template_directories (args .filename , args .template_dir , DEFAULT_TEMPLATE_DIRS )
188203
189- console .info (f"Rendering { args .filename } to target code." )
190-
191204 # Compute render range from either --render-range or --render-from
192205 render_range = None
193206 if args .render_range or args .render_from :
@@ -219,22 +232,26 @@ def render(args, run_state: RunState, event_bus: EventBus): # noqa: C901
219232 )
220233
221234 render_error : list [Exception ] = []
235+ run_state .render_succeeded = False
222236
223237 def run_render ():
224238 try :
225239 module_renderer .render_module ()
226- console . info ( f"[#79FC96]Render { run_state .render_id } completed successfully.[/#79FC96]" )
240+ run_state .set_render_succeeded ( True )
227241 except RenderCancelledError :
228242 pass # TUI already closed, nothing to report
229243 except Exception as e :
244+ run_state .set_render_succeeded (False )
230245 render_error .append (e )
231246 event_bus .publish (RenderFailed (error_message = str (e )))
232247
233248 if args .headless :
234249 console .info (f"Render started. Render ID: { run_state .render_id } " )
235250 try :
236251 module_renderer .render_module ()
252+ run_state .set_render_succeeded (True )
237253 except RenderCancelledError :
254+ run_state .set_render_succeeded (False )
238255 pass
239256 return
240257 else :
@@ -251,6 +268,7 @@ def run_render():
251268 css_path = "styles.css" ,
252269 )
253270 app .run ()
271+
254272 stop_event .set ()
255273 render_thread .join (timeout = RENDER_THREAD_SHUTDOWN_TIMEOUT )
256274
@@ -304,8 +322,6 @@ def main(): # noqa: C901
304322 raise MissingAPIKey (
305323 "API key is required. Please set the CODEPLAIN_API_KEY environment variable or provide it with the --api-key argument."
306324 )
307-
308- console .info (f"Render ID: { run_state .render_id } " )
309325 render (args , run_state , event_bus )
310326 except InvalidFridArgument as e :
311327 exc_info = sys .exc_info ()
@@ -374,6 +390,7 @@ def main(): # noqa: C901
374390 console .error (f"Error rendering plain code: { str (e )} \n " )
375391 console .debug (f"Render ID: { run_state .render_id } " )
376392 finally :
393+ print_exit_summary (run_state , args .filename )
377394 if exc_info :
378395 # Log traceback using the logging system
379396 logging .error ("Render crashed with exception:" , exc_info = exc_info )
0 commit comments