FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Fix errors showing as success in Firestore commands by TomasMorton · Pull Request #7474 · firebase/firebase-tools · GitHub

Fix errors showing as success in Firestore commands - #7474

Closed
TomasMorton wants to merge 9 commits into
firebase:masterfrom
TomasMorton:tm-firestore-fix-json-failures
Closed

Fix errors showing as success in Firestore commands#7474
TomasMorton wants to merge 9 commits into
firebase:masterfrom
TomasMorton:tm-firestore-fix-json-failures

Conversation

TomasMorton commented Jul 19, 2024
edited
Loading

Copy link
Copy Markdown
Member

Description

Firestore commands often log and then return. This works fine for normal commands, but when using --json mode it will print success to the terminal even though it early exited with an error. Replacing these logs with FirebaseErrors.

Before change:

$ firebase firestore:databases:restore --json
{
  "status": "success"
}

After change:

$ firebase firestore:databases:restore --json
{
  "status": "error",
  "error": "Missing required flag --database. See firebase firestore:databases:restore --help for more info"
}

Scenarios Tested

All failure scenarios tested for the changed commands.

Click to see all test output

firestore:backups:schedules:create

$ firebase firestore:backups:schedules:create --json
{
"status": "error",
"error": "Missing required flag --retention. See firebase firestore:backups:schedules:create --help for more info."
}
Having trouble? Try firebase [command] --help

$ firebase firestore:backups:schedules:create --json --retention
error: option '-rt, --retention <duration>' argument missing

# retention
$ firebase firestore:backups:schedules:create --json --retention 1s
{
"status": "error",
"error": "\"retention\" flag must be a duration string (e.g. 24h, 2w, or 7d)"
}
Having trouble? Try firebase [command] --help

$ firebase firestore:backups:schedules:create --json --retention 2w
{
"status": "error",
"error": "Missing required flag --recurrence. See firebase firestore:backups:schedules:create --help for more info."
}
Having trouble? Try firebase [command] --help

# recurrence
$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence
error: option '-rc, --recurrence <recurrence>' argument missing

$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence M
{
"status": "error",
"error": "Invalid value for flag --recurrence. See firebase firestore:backups:schedules:create --help for more info."
}
Having trouble? Try firebase [command] --help

$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence WEEKLY
{
"status": "error",
"error": "If --recurrence is WEEKLY, --day-of-week must be provided. See firebase firestore:backups:schedules:create --help for more info."
}
Having trouble? Try firebase [command] --help

# day-of-week
$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence WEEKLY --day-of-week
error: option '-dw, --day-of-week <dayOfWeek>' argument missing

$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence WEEKLY --day-of-week MON
{
"status": "error",
"error": "HTTP Error: 400, Invalid value at 'backup_schedule.weekly_recurrence.day' (type.googleapis.com/google.type.DayOfWeek), \"MON\""
}
Having trouble? Try firebase [command] --help

$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence DAILY --day-of-week MONDAY
{
"status": "error",
"error": "--day-of-week should not be provided if --recurrence is DAILY. See firebase firestore:backups:schedules:create --help for more info."
}
Having trouble? Try firebase [command] --help

# Success
$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence DAILY
$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence WEEKLY --day-of-week MONDAY

firestore:backups:schedules:update

$ firebase firestore:backups:schedules:update --json
error: missing required argument 'backupSchedule'

$ firebase firestore:backups:schedules:update schedule --json
{
"status": "error",
"error": "Missing required flag --retention. See firebase firestore:backups:schedules:update --help for more info."
}
Having trouble? Try firebase [command] --help

# retention
$ firebase firestore:backups:schedules:update schedule --json --retention
error: option '-rt, --retention <duration>' argument missing

# Success
$ firebase firestore:backups:schedules:update schedule --json --retention 2w

firestore:databases:create

$ firebase firestore:databases:create --json
error: missing required argument 'database'

$ firebase firestore:databases:create database --json
{
"status": "error",
"error": "Missing required flag --location. See firebase firestore:databases:create --help for more info."
}
Having trouble? Try firebase [command] --help

# location
$ firebase firestore:databases:create database --json --location
error: option '--location <locationId>' argument missing

# delete-protection
$ firebase firestore:databases:create database --json --location us --delete-protection
error: option '--delete-protection <deleteProtectionState>' argument missing

$ firebase firestore:databases:create database --json --location us --delete-protection unknown
{
"status": "error",
"error": "Invalid value for flag --delete-protection. See firebase firestore:databases:create --help for more info."
}
Having trouble? Try firebase [command] --help

# point-in-time-recovery
$ firebase firestore:databases:create database --json --location us --delete-protection ENABLED --point-in-time-recovery
error: option '--point-in-time-recovery <enablement>' argument missing

$ firebase firestore:databases:create database --json --location us --delete-protection ENABLED --point-in-time-recovery unknown
{
"status": "error",
"error": "Invalid value for flag --point-in-time-recovery. See firebase firestore:databases:create --help for more info."
}
Having trouble? Try firebase [command] --help

# Success
$ firebase firestore:databases:create database --json --location us --delete-protection ENABLED --point-in-time-recovery ENABLED

firestore:databases:restore

$ firebase firestore:databases:restore --json
{
"status": "error",
"error": "Missing required flag --database. See firebase firestore:databases:restore --help for more info."
}
Having trouble? Try firebase [command] --help

# database
$ firebase firestore:databases:restore --json --database
error: option '-d, --database <databaseID>' argument missing

$ firebase firestore:databases:restore --json --database database
{
"status": "error",
"error": "Missing required flag --backup. See firebase firestore:databases:restore --help for more info."
}
Having trouble? Try firebase [command] --help

# backup
$ firebase firestore:databases:restore --json --database database --backup
error: option '-b, --backup <backup>' argument missing

# Success
$ firebase firestore:databases:restore --json --database database --backup backup

firestore:databases:update

$ firebase firestore:databases:update --json
error: missing required argument 'database'

$ firebase firestore:databases:update database --json
{
"status": "error",
"error": "Missing properties to update. See firebase firestore:databases:update --help for more info."
}
Having trouble? Try firebase [command] --help

# delete-protection
$ firebase firestore:databases:update database --json --delete-protection
error: option '--delete-protection <deleteProtectionState>' argument missing

$ firebase firestore:databases:update database --json --delete-protection unknown
{
"status": "error",
"error": "Invalid value for flag --delete-protection. See firebase firestore:databases:update --help for more info."
}
Having trouble? Try firebase [command] --help

# point-in-time-recovery
$ firebase firestore:databases:update database --json --point-in-time-recovery
error: option '--point-in-time-recovery <enablement>' argument missing

$ firebase firestore:databases:update database --json --point-in-time-recovery unknown
{
"status": "error",
"error": "Invalid value for flag --point-in-time-recovery. See firebase firestore:databases:update --help for more info."
}
Having trouble? Try firebase [command] --help

# Success
$ firebase firestore:databases:update database --json --point-in-time-recovery ENABLED
$ firebase firestore:databases:update database --json --delete-protection ENABLED

Sample Commands

No changes to commands, only error output.

$ firebase firestore:backups:schedules:create --json
$ firebase firestore:backups:schedules:create --json --retention
$ firebase firestore:backups:schedules:create --json --retention 1s
$ firebase firestore:backups:schedules:create --json --retention 2w
$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence
$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence M
$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence WEEKLY
$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence WEEKLY --day-of-week
$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence WEEKLY --day-of-week MON
$ firebase firestore:backups:schedules:create --json --retention 2w --recurrence DAILY --day-of-week MONDAY

$ firebase firestore:backups:schedules:update --json
$ firebase firestore:backups:schedules:update schedule --json
$ firebase firestore:backups:schedules:update schedule --json --retention

$ firebase firestore:databases:create --json
$ firebase firestore:databases:create database --json
$ firebase firestore:databases:create database --json --location
$ firebase firestore:databases:create database --json --location us --delete-protection
$ firebase firestore:databases:create database --json --location us --delete-protection unknown
$ firebase firestore:databases:create database --json --location us --delete-protection ENABLED --point-in-time-recovery
$ firebase firestore:databases:create database --json --location us --delete-protection ENABLED --point-in-time-recovery unknown

$ firebase firestore:databases:restore --json
$ firebase firestore:databases:restore --json --database
$ firebase firestore:databases:restore --json --database database
$ firebase firestore:databases:restore --json --database database --backup

$ firebase firestore:databases:update --json
$ firebase firestore:databases:update database --json
$ firebase firestore:databases:update database --json --delete-protection
$ firebase firestore:databases:update database --json --delete-protection unknown
$ firebase firestore:databases:update database --json --point-in-time-recovery
$ firebase firestore:databases:update database --json --point-in-time-recovery unknown

TomasMorton changed the title Tm firestore fix json failures Fix errors showing as success in Firestore commands Jul 19, 2024
TomasMorton marked this pull request as ready for review July 19, 2024 18:14
TomasMorton marked this pull request as draft July 19, 2024 18:16
TomasMorton marked this pull request as ready for review July 22, 2024 13:54

joehan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Nice improvement! Can you add a CHANGELOG entry for this? its a very relevant change for folks who use this in noninteractive mode

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants


Back | FazBrowse Home | New Git URL