-
-
Save AlexVanderbist/29af47f71f8273e4c91507b6c36e1446 to your computer and use it in GitHub Desktop.
opendb () { | |
[ ! -f .env ] && { echo "No .env file found."; exit 1; } | |
DB_CONNECTION=$(grep DB_CONNECTION .env | grep -v -e '^\s*#' | cut -d '=' -f 2-) | |
DB_HOST=$(grep DB_HOST .env | grep -v -e '^\s*#' | cut -d '=' -f 2-) | |
DB_PORT=$(grep DB_PORT .env | grep -v -e '^\s*#' | cut -d '=' -f 2-) | |
DB_DATABASE=$(grep DB_DATABASE .env | grep -v -e '^\s*#' | cut -d '=' -f 2-) | |
DB_USERNAME=$(grep DB_USERNAME .env | grep -v -e '^\s*#' | cut -d '=' -f 2-) | |
DB_PASSWORD=$(grep DB_PASSWORD .env | grep -v -e '^\s*#' | cut -d '=' -f 2-) | |
DB_URL="${DB_CONNECTION}://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_DATABASE}" | |
echo "Opening ${DB_URL}" | |
open $DB_URL | |
} |
also for all you Homestead users out there... hardcode a "0" after the port, so it maps correctly.
DB_URL="${DB_CONNECTION}://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}0/${DB_DATABASE}"
Anyone can do this for sequel ace ?
If password contains special characters this doesn't work, one workaround is to use PHP's URL encode:
export DB_PASSWORD=$(grep DB_PASSWORD .env | grep -v -e '^\s*#' | cut -d '=' -f 2-)
DB_PASSWORD=$(php -r 'echo urlencode(getenv("DB_PASSWORD"));')
DB_URL="postgresql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_DATABASE}"
And for PostgreSQL the Laravel's pgsql
in DB_CONNECTION doesn't seem to work in URL, hard coded postgresql://...
works
Anyone can do this for sequel ace ?
change last line to this:
open -a "sequel ace" $DB_URL
Anyone can do this for sequel ace ?
change last line to this:
open -a "sequel ace" $DB_URL
Thanks bro you are a genius <3
Double quote "$DB_URL" to prevent globbing and word splitting. 😉
I was trying to come up with a similar function for launching the given (.env) postgres db in pgAdmin4 but couldn't get anywhere with it.
Has anyone tried that?
The script doesn’t work if the strings in your .env
file are wrapped with quotes, but my grep
and cut
skills aren’t good enough to improve on that.
Nice trick though, didn’t know about mysql://
one minor suggestion, prepend all the
DB_
with a caret, so we ensure it is at the start of the lineDB_CONNECTION=$(grep ^DB_CONNECTION .env | grep -v -e '^\s*#' | cut -d '=' -f 2-)
our
.env
file sometimes contains more than one database connect, something likeLEGACY_DB_CONNECTION
, and that fubars this script.