by Thang Minh Vu

How to show your current Firebase project name on the command line prompt to prevent dangerous errors

jcWoTRkV-NwpAuy4TugJe46lUPUttTuMeRkZ
Firebase

When working on a project with multiple stages (development, staging, production), developers use the command firebase use to switch between projects. It’s very easy to run a command on the production environment instead of the development. This is very dangerous.

eFjsis27Zzr7idxjQLbY6pGoFuXoJaFymGRv
Command to switch between firebase project

Note: You can always find the latest script at my GitHub repository.

Normally, developers only work on the development project. They only switch to production in case of checking or doing a hotfix. There have been a few times when I forgot to switch back to the development project. I accidentally changed the database without thinking that it could impact the actual users.

Digging into the firebase CLI, I found that it uses configstore to manage local configuration. All config is saved in a JSON file and reads easily. I created a small script which is intended to show the firebase project name on shell prompt.

How to set it up

Bash

Add the following script to the end of ~/.bash_profile:

vxqUWLsAfgLirG49oRLax03ekT7t5SfgaXYq
Add script to ~/.bash_profile

Then run source ~/.bash_profile or open a new terminal window:

ziaCqfVR0i6tyepr38KBdQ8jnmcdwq7pzHNl
Firebase project name is displayed as dev-project, stage-project and prod-project

iTerm2 with oh-my-zsh

Oh-my-zsh is a popular open source framework for Zshell. I like it because it has many beautiful terminal themes and many useful plugins.

Here, I will make an example with the agnoster theme:
Edit ~/.oh-my-zsh/themes/agnoster.zsh-theme

RtXGYfMLwplrpQj-BQkXr3M9cMxpRKWuo4z4
Script for oh-my-zsh

and then add prompt_firebase to build_prompt functions:

uHVO625HTQdptNI1faRbYW8EZgHVpAEycvh4
Change build_promt function

For the final step, run source ~/.zshrc or open a new terminal window:

CsElxb8a3b4VSJjAqXkyFL-XrwhSXlLEIbuF
saas-cs-deploy-taguro-5c55e is displayed as last text in terminal prompt

I hope this can help you prevent the an unexpected (and bad) situation.

Note: You can always find the latest script at my GitHub repository.