Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,31 @@ Complete the following steps to run Firebase commands in a CI environment. Find

To disable access for the service account, [find the service account](https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts) for your project in the Google Cloud Console, and then either remove the key, or disable or delete the service account.

## Machine-readable output

By default, the Firebase CLI prints human-readable output to `stdout`. That
output is **not** part of the CLI's API — it may change at any time — so
scripts and CI pipelines should not parse it directly.

For scripting and automation, pass the `--json` flag to any command. With
`--json`:

- `stdout` receives a single JSON document describing the command's
result — parsable regardless of exit code.
Comment on lines +260 to +261
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

It would be beneficial to explicitly mention the top-level status field in the JSON output. This helps users understand how to distinguish between success and error responses programmatically, especially since the example below relies on the .result field.

Suggested change
- `stdout` receives a single JSON document describing the command's
result — parsable regardless of exit code.
- `stdout` receives a single JSON document with a top-level `status` ("success" or "error") — parsable regardless of exit code.

- The shape is stable across versions and intended for programmatic use.

```bash
# Human output (default) — do not parse this in scripts
$ firebase hosting:channel:list --project my-project

# Machine output — safe to parse in CI
$ firebase hosting:channel:list --project my-project --json | jq '.result.channels[].name'
```

If `--json` isn't enough for your use case (e.g. you need to catch thrown
errors rather than inspect an exit code), see [Using as a
Module](#using-as-a-module) below.
Comment on lines +273 to +274
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The markdown link is split across two lines. Keeping it on a single line improves readability in the source and ensures better compatibility with various markdown parsers.

Suggested change
errors rather than inspect an exit code), see [Using as a
Module](#using-as-a-module) below.
errors rather than inspect an exit code), see [Using as a Module](#using-as-a-module) below.


## Using as a Module

The Firebase CLI can also be used programmatically as a standard Node module.
Expand Down