import sys import click from .parseutils import is_destructive def confirm_destructive_query(queries, keywords, alias): """Check if the query is destructive and prompts the user to confirm. Returns: * None if the query is non-destructive or we can't prompt the user. * True if the query is destructive and the user wants to proceed. * False if the query is destructive and the user doesn't want to proceed. """ info = "You're about to run a destructive command" if alias: info += f" in {click.style(alias, fg='red')}" prompt_text = f"{info}.\nDo you want to proceed?" if is_destructive(queries, keywords) and sys.stdin.isatty(): return confirm(prompt_text) def confirm(*args, **kwargs): """Prompt for confirmation (yes/no) and handle any abort exceptions.""" try: return click.confirm(*args, **kwargs) except click.Abort: return False def prompt(*args, **kwargs): """Prompt the user for input and handle any abort exceptions.""" try: return click.prompt(*args, **kwargs) except click.Abort: return False