summaryrefslogtreecommitdiffstats
path: root/src/commands/db.rs
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-11-16 17:15:19 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-11-16 18:01:37 +0100
commitd3e6b193be2c15a6d1a53de5a1f859456f8f6fe7 (patch)
tree9077691a907bf8980d7361a64533dd52e90b735d /src/commands/db.rs
parent58e91bea992ba400e2559a4a5cbf7200a01c7c90 (diff)
Show environment variables when showing job from DB
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/commands/db.rs')
-rw-r--r--src/commands/db.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/commands/db.rs b/src/commands/db.rs
index b788f71..c3c8e58 100644
--- a/src/commands/db.rs
+++ b/src/commands/db.rs
@@ -8,6 +8,7 @@ use anyhow::Error;
use anyhow::Result;
use anyhow::anyhow;
use clap::ArgMatches;
+use diesel::BelongingToDsl;
use diesel::ExpressionMethods;
use diesel::JoinOnDsl;
use diesel::QueryDsl;
@@ -292,6 +293,21 @@ fn job<'a>(conn_cfg: DbConnectionConfig, config: &Configuration<'a>, matches: &A
.inner_join(schema::images::table)
.first::<(models::Job, models::Submit, models::Endpoint, models::Package, models::Image)>(&conn)?;
+ let env_vars = if matches.is_present("show_env") {
+ Some({
+ models::JobEnv::belonging_to(&data.0)
+ .inner_join(schema::envvars::table)
+ .load::<(models::JobEnv, models::EnvVar)>(&conn)?
+ .into_iter()
+ .map(|tpl| tpl.1)
+ .enumerate()
+ .map(|(i, env)| format!("\t{:>3}. {}={}", i, env.name, env.value))
+ .join("\n")
+ })
+ } else {
+ None
+ };
+
let parsed_log = crate::log::ParsedLog::build_from(&data.0.log_text)?;
let success = parsed_log.is_successfull();
let s = indoc::formatdoc!(r#"
@@ -308,6 +324,10 @@ fn job<'a>(conn_cfg: DbConnectionConfig, config: &Configuration<'a>, matches: &A
---
+ {envs}
+
+ ---
+
{script_text}
---
@@ -333,6 +353,7 @@ fn job<'a>(conn_cfg: DbConnectionConfig, config: &Configuration<'a>, matches: &A
container_hash = data.0.container_hash.cyan(),
script_len = format!("{:<4}", data.0.script_text.lines().count()).cyan(),
log_len = format!("{:<4}", data.0.log_text.lines().count()).cyan(),
+ envs = env_vars.unwrap_or_else(|| String::from("<env vars hidden>")),
script_text = if show_script {
if let Some(configured_theme) = configured_theme {
if highlighting_disabled {