@@ -648,7 +648,7 @@ def load_graph_toml(self, toml_file: str):
648648 elif new_bugs .get (dep ) is not None :
649649 new_bugs [node_name ].edges .add (new_bugs [dep ])
650650 else :
651- bugs . error (f"[{ node_name } ]['depends']: unknown dependency { dep !r} " )
651+ raise ValueError (f"[{ node_name } ]['depends']: unknown dependency { dep !r} " )
652652 self .nodes = set (new_bugs .values ())
653653 self .starting_nodes = {node for node in self .nodes if not node .edges }
654654
@@ -898,13 +898,22 @@ def main(options, out: Formatter, err: Formatter):
898898 return 1
899899
900900 editor = shlex .split (os .environ .get ("VISUAL" , os .environ .get ("EDITOR" , "nano" )))
901- try :
902- subprocess .run (editor + [toml .name ], check = True )
903- except subprocess .CalledProcessError :
904- bugs .error ("failed writing mask comment" )
905- except FileNotFoundError :
906- bugs .error (f"nonexistent editor: { editor [0 ]!r} " )
907- d .load_graph_toml (toml .name )
901+ while True :
902+ try :
903+ subprocess .run (editor + [toml .name ], check = True )
904+ except subprocess .CalledProcessError :
905+ bugs .error ("failed writing mask comment" )
906+ except FileNotFoundError :
907+ bugs .error (f"nonexistent editor: { editor [0 ]!r} " )
908+ try :
909+ d .load_graph_toml (toml .name )
910+ except Exception as e :
911+ err .write (err .fg ("red" ), f"Invalid graph: { e } " , err .reset )
912+ err .flush ()
913+ if userquery (" Reopen editor to fix the error?" , out , err , default_answer = True ):
914+ continue
915+ return 1
916+ break
908917 for node in d .nodes :
909918 node .cleanup_keywords (search_repo )
910919
0 commit comments