mirror of https://github.com/dbcli/pgcli
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
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
|