pgcli icon indicating copy to clipboard operation
pgcli copied to clipboard

Add support for -y/--yes flag to bypass confirmation prompts

Open DiegoDAF opened this issue 4 weeks ago • 0 comments

Summary

This PR adds support for the -y/--yes option to pgcli, allowing users to bypass destructive command confirmation prompts. This is particularly useful for automated scripts and CI/CD pipelines.

Features

  • Skip confirmations: pgcli -y or pgcli --yes
  • Automated-friendly: Perfect for scripts and CI/CD pipelines
  • Safe by default: Flag must be explicitly set
  • Respects transactions: Transaction requirements still apply even with -y
  • Clean output: Suppresses "Your call!" message when auto-confirming

Use Cases

# CI/CD pipeline
pgcli -y -c "DROP TABLE old_data;"

# Automated maintenance script
pgcli --yes -f cleanup.sql

# Interactive use (still requires confirmation)
pgcli  # without -y, prompts as usual

Implementation Details

  • Added force_destructive parameter to PGCli class
  • Modified destructive command checks in two locations:
    • execute_command() method for programmatic execution
    • Interactive command handler in run_cli()
  • When -y is set, confirm_destructive_query() is bypassed
  • Transaction requirements are NOT bypassed (safety measure)
  • "Your call!" message is suppressed when using -y (no user interaction occurred)

Testing

Comprehensive unit tests included:

  • Initialization with different flag values
  • Confirmation bypass when flag is True
  • Normal confirmation flow when flag is False/not set
  • Mock verification that confirmation is/isn't called as expected

Safety Considerations

  • Default behavior unchanged (confirmations still required)
  • Transaction requirements remain enforced
  • Users must explicitly opt-in to skip confirmations
  • Helps prevent accidental destructive operations in interactive use

Made with ❤️ and 🤖 Claude Code

DiegoDAF avatar Dec 05 '25 18:12 DiegoDAF