From 2ec5ff06b0383b4c533a1af5d93a0bcc9f7be769 Mon Sep 17 00:00:00 2001 From: Stuart Hinson Date: Mon, 17 Aug 2020 07:16:39 -0700 Subject: [PATCH] Add --database-url to command line --- sqlx-cli/README.md | 2 +- sqlx-cli/src/lib.rs | 7 +++++-- sqlx-cli/src/opt.rs | 3 +++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/sqlx-cli/README.md b/sqlx-cli/README.md index 4bbd8577..9276451b 100644 --- a/sqlx-cli/README.md +++ b/sqlx-cli/README.md @@ -17,7 +17,7 @@ $ cargo install --version=0.1.0-beta.1 sqlx-cli --no-default-features --features ### Usage -All commands require `DATABASE_URL` to be set, either in the environment or in a `.env` file +All commands require that a database url is provided. This can be done either with the `--database-url` command line option or by setting `DATABASE_URL`, either in the environment or in a `.env` file in the current working directory. `database` and `migrate` subcommands support only Postgres; MySQL and SQLite are TODO. diff --git a/sqlx-cli/src/lib.rs b/sqlx-cli/src/lib.rs index b0ee8174..b38261c6 100644 --- a/sqlx-cli/src/lib.rs +++ b/sqlx-cli/src/lib.rs @@ -15,8 +15,11 @@ pub use crate::opt::Opt; pub async fn run(opt: Opt) -> anyhow::Result<()> { dotenv().ok(); - let database_url = env::var("DATABASE_URL") - .map_err(|_| anyhow!("The DATABASE_URL environment variable must be set"))?; + let database_url = match opt.database_url { + Some(db_url) => db_url, + None => env::var("DATABASE_URL") + .map_err(|_| anyhow!("The DATABASE_URL environment variable must be set"))?, + }; match opt.command { Command::Migrate(migrate) => match migrate.command { diff --git a/sqlx-cli/src/opt.rs b/sqlx-cli/src/opt.rs index 2b77d73b..a90b67e3 100644 --- a/sqlx-cli/src/opt.rs +++ b/sqlx-cli/src/opt.rs @@ -4,6 +4,9 @@ use clap::Clap; pub struct Opt { #[clap(subcommand)] pub command: Command, + + #[clap(short = "D", long)] + pub database_url: Option, } #[derive(Clap, Debug)]