Add support for -y/--yes flag to bypass confirmation prompts#1544
Open
DiegoDAF wants to merge 5 commits into
Open
Add support for -y/--yes flag to bypass confirmation prompts#1544DiegoDAF wants to merge 5 commits into
DiegoDAF wants to merge 5 commits into
Conversation
This commit 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: - Single flag to skip all destructive confirmations: pgcli -y - Long form: pgcli --yes - Useful for automated environments - Maintains safety by default (flag must be explicitly set) - Does not override transaction requirements When the flag is set: - Destructive commands execute without prompting - Transaction requirements still apply - Error handling remains the same Comprehensive unit tests included to verify: - Flag initialization - Confirmation bypass behavior - Normal confirmation flow without flag Made with ❤️ and 🤖 Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
When using the --yes flag to auto-confirm destructive commands, pgcli should not display the "Your call!" message since no user interaction occurred. This message is now only shown when the user manually confirms the destructive warning prompt. Made with ❤️ and 🤖 Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
DiegoDAF
marked this pull request as ready for review
December 5, 2025 18:50
j-bennet
reviewed
Jul 20, 2026
| message = "Destructive statements must be run within a transaction. Command execution stopped." | ||
| return [(None, None, None, message)] | ||
| destroy = confirm_destructive_query(query, self.destructive_warning, self.dsn_alias) | ||
| if self.force_destructive: |
Contributor
There was a problem hiding this comment.
Rather than check self.force_destructive in two places, I'd change the signature of confirm_destructive_query to include it as a parameter.
Address review feedback: instead of checking self.force_destructive at both call sites, confirm_destructive_query now takes a `force` parameter and owns the whole 'should we proceed?' decision. Behaviour is unchanged: non-destructive returns None, force returns True, a non-tty stdin returns None (no prompt), otherwise the user is prompted. The parameter defaults to False, so existing callers are unaffected.
# Conflicts: # pgcli/main.py
DiegoDAF
added a commit
to DiegoDAF/pgcli.daf
that referenced
this pull request
Jul 20, 2026
Port of the review feedback on upstream PR dbcli#1544. Instead of checking self.force_destructive at both call sites (execute_from_file and execute_command), confirm_destructive_query now takes a `force` parameter and owns the whole "should we proceed?" decision: non-destructive -> None force -> True non-tty stdin -> None (no prompt) otherwise -> prompt the user Behaviour is unchanged. The parameter defaults to False, so existing callers are unaffected. The only remaining self.force_destructive reference is the guard that suppresses the "Your call!" message, which is about output, not the proceed/abort decision. Also closes roadmap item dbcli#4 (Conexiones) in todo.md as redundant: post-connect SQL and .pg_service.conf already exist, keepalives/connect_timeout already work via the connection string, and SSL ~ expansion has no practical need. No version bump (held at 4.5.7 per Diego).
test_force_destructive_skips_confirmation asserted that confirm_destructive_query was never called with -y. Now that the helper takes the force parameter it IS called and decides internally not to prompt, so the old assertion encoded the previous structure rather than the behaviour. It now patches prompt_utils.confirm and asserts the user is never prompted, which is the actual guarantee -y makes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds support for the
-y/--yesoption to pgcli, allowing users to bypass destructive command confirmation prompts. This is particularly useful for automated scripts and CI/CD pipelines.Features
pgcli -yorpgcli --yes-yUse Cases
Implementation Details
force_destructiveparameter to PGCli classexecute_command()method for programmatic executionrun_cli()-yis set,confirm_destructive_query()is bypassed-y(no user interaction occurred)Testing
Comprehensive unit tests included:
Safety Considerations
Made with ❤️ and 🤖 Claude Code