Skip to content

Commit b0b90c6

Browse files
committed
bugs: enable reopening editor on graph parsing errors
Resolves: #226 Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
1 parent fa09909 commit b0b90c6

1 file changed

Lines changed: 17 additions & 8 deletions

File tree

src/pkgdev/scripts/pkgdev_bugs.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)