Skip to content

Commit 1e678df

Browse files
committed
add $env.DATABASE_URL support
1 parent 2d6b692 commit 1e678df

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

src/main.rs

+20-7
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,35 @@ impl SimplePluginCommand for Psql {
6060
fn signature(&self) -> Signature {
6161
Signature::build("psql")
6262
.description("Execute PostgreSQL query.")
63-
.required("conn", SyntaxShape::String, "DB connection string")
63+
.named(
64+
"conn",
65+
SyntaxShape::String,
66+
"DB connection string",
67+
Some('c'),
68+
)
6469
.required("query", SyntaxShape::String, "SQL query")
6570
}
6671

6772
fn run(
6873
&self,
6974
_plugin: &Self::Plugin,
70-
_engine: &nu_plugin::EngineInterface,
75+
engine: &nu_plugin::EngineInterface,
7176
call: &nu_plugin::EvaluatedCall,
7277
_input: &Value,
73-
) -> Result<Value, nu_protocol::LabeledError> {
74-
let args = &call.positional;
75-
let conn = args[0].as_str()?;
76-
let query = args[1].as_str()?;
78+
) -> Result<Value, LabeledError> {
79+
let query = call.positional[0].as_str()?;
80+
let conn = call
81+
.get_flag_value("conn")
82+
.or_else(|| {
83+
engine
84+
.get_plugin_config()
85+
.ok()??
86+
.get_data_by_key("DATABASE_URL")
87+
})
88+
.or_else(|| engine.get_env_var("DATABASE_URL").ok().flatten())
89+
.ok_or_else(|| LabeledError::new("missing both `--conn` and `DATABASE_URL`"))?;
7790

78-
self.cmd(conn, query, call.head)
91+
self.cmd(conn.as_str()?, query, call.head)
7992
.map(|table| Value::list(table, call.head))
8093
.map_err(Into::into)
8194
}

0 commit comments

Comments
 (0)