Skip to content

Commit

Permalink
fix: fix args parser
Browse files Browse the repository at this point in the history
  • Loading branch information
sundy-li committed May 5, 2024
1 parent f6865a8 commit cb1d61a
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 38 deletions.
69 changes: 32 additions & 37 deletions cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ where

#[tokio::main]
pub async fn main() -> Result<()> {
let mut config = Config::load();
let config = Config::load();

let args = Args::parse();
let mut cmd = Args::command();
Expand All @@ -236,7 +236,7 @@ pub async fn main() -> Result<()> {
return Ok(());
}

let mut conn_args = match args.dsn {
let conn_args = match args.dsn {
Some(dsn) => {
if args.host.is_some() {
eprintln!("warning: --host is ignored when --dsn is set");
Expand All @@ -256,51 +256,46 @@ pub async fn main() -> Result<()> {
ConnectionArgs::from_dsn(dsn.inner())?
}
None => {
if let Some(host) = args.host {
config.connection.host = host;
let host = args.host.unwrap_or_else(|| config.connection.host.clone());
let mut port = config.connection.port;
if args.port.is_some() {
port = args.port;
}
if let Some(port) = args.port {
config.connection.port = Some(port);

let user = args.user.unwrap_or_else(|| config.connection.user.clone());
let password = args.password.unwrap_or_else(|| SensitiveString::from(""));
let mut database = config.connection.database.clone();
if args.database.is_some() {
database = args.database;
}
let mut connection_args = config.connection.args.clone();
if !args.tls {
config
.connection
.args
.insert("sslmode".to_string(), "disable".to_string());
connection_args.insert("sslmode".to_string(), "disable".to_string());
}

// override args if specified in command line
for (k, v) in args.set {
connection_args.insert(k, v);
}

// override role if specified in command line
if let Some(role) = args.role {
connection_args.insert("role".to_string(), role);
}

ConnectionArgs {
host: config.connection.host.clone(),
port: config.connection.port,
user: config.connection.user.clone(),
password: SensitiveString::from(""),
database: config.connection.database.clone(),
host,
port,
user,
password,
database,
flight: args.flight,
args: config.connection.args.clone(),
args: connection_args,
}
}
};
// override database if specified in command line
if args.database.is_some() {
conn_args.database = args.database;
}
// override user if specified in command line
if let Some(user) = args.user {
config.connection.user = user;
}
// override password if specified in command line
if let Some(password) = args.password {
conn_args.password = password;
}
// override role if specified in command line
if let Some(role) = args.role {
config.connection.args.insert("role".to_string(), role);
}
// override args if specified in command line
for (k, v) in args.set {
config.connection.args.insert(k, v);
}
let dsn = conn_args.get_dsn()?;

let dsn = conn_args.get_dsn()?;
let mut settings = Settings::default();
let is_terminal = stdin().is_terminal();
let is_repl = is_terminal && !args.non_interactive && !args.check && args.query.is_none();
Expand Down
7 changes: 6 additions & 1 deletion cli/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,13 @@ case $TEST_HANDLER in
;;
"http")
echo "==> Testing REST API handler"
export BENDSQL_DSN="databend+http://${DATABEND_USER}:${DATABEND_PASSWORD}@${DATABEND_HOST}:8000/?sslmode=disable&presign=on"
export BENDSQL="${CARGO_TARGET_DIR}/debug/bendsql"

echo "create user if not exists databend identified by 'databend'" | bendsql -dsn="databend+http://${DATABEND_USER}:${DATABEND_PASSWORD}@${DATABEND_HOST}:8000/?sslmode=disable&presign=on"
export BENDSQL_NEW="${BENDSQL} --user databend --password databend --host ${DATABEND_HOST} --port 8000"
$BENDSQL_NEW --query="select 1"

export BENDSQL_DSN="databend+http://${DATABEND_USER}:${DATABEND_PASSWORD}@${DATABEND_HOST}:8000/?sslmode=disable&presign=on"
;;
*)
echo "Usage: $0 [flight|http]"
Expand Down

0 comments on commit cb1d61a

Please sign in to comment.