Skip to content

Commit

Permalink
feat(cli/rustup-mode)!: set log level to INFO/DEBUG on --quiet/…
Browse files Browse the repository at this point in the history
…`--verbose` if `RUSTUP_LOG` is unset
  • Loading branch information
rami3l committed Sep 4, 2024
1 parent ec5ce0e commit b15e0a0
Show file tree
Hide file tree
Showing 8 changed files with 32 additions and 33 deletions.
2 changes: 1 addition & 1 deletion src/bin/rustup-init.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ async fn run_rustup_inner(
utils::current_exe()?;

match process.name().as_deref() {
Some("rustup") => rustup_mode::main(current_dir, process).await,
Some("rustup") => rustup_mode::main(current_dir, process, console_filter).await,
Some(n) if n.starts_with("rustup-setup") || n.starts_with("rustup-init") => {
// NB: The above check is only for the prefix of the file
// name. Browsers rename duplicates to
Expand Down
17 changes: 12 additions & 5 deletions src/cli/rustup_mode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@ use clap::{builder::PossibleValue, Args, CommandFactory, Parser, Subcommand, Val
use clap_complete::Shell;
use itertools::Itertools;
use tracing::{info, trace, warn};
use tracing_subscriber::{reload::Handle, EnvFilter, Registry};

use crate::{
cli::{
common::{self, PackageUpdate},
common::{self, update_console_filter, PackageUpdate},
errors::CLIError,
help::*,
self_update::{self, check_rustup_update, SelfUpdateMode},
Expand Down Expand Up @@ -68,11 +69,11 @@ fn handle_epipe(res: Result<utils::ExitCode>) -> Result<utils::ExitCode> {
after_help = RUSTUP_HELP,
)]
struct Rustup {
/// Enable verbose output
#[arg(short, long)]
/// Set log level to 'DEBUG' if 'RUSTUP_LOG' is unset
#[arg(short, long, conflicts_with = "quiet")]
verbose: bool,

/// Disable progress output
/// Disable progress output, set log level to 'WARN' if 'RUSTUP_LOG' is unset
#[arg(short, long, conflicts_with = "verbose")]
quiet: bool,

Expand Down Expand Up @@ -532,7 +533,11 @@ enum SetSubcmd {
}

#[tracing::instrument(level = "trace", fields(args = format!("{:?}", process.args_os().collect::<Vec<_>>())))]
pub async fn main(current_dir: PathBuf, process: &Process) -> Result<utils::ExitCode> {
pub async fn main(
current_dir: PathBuf,
process: &Process,
console_filter: Handle<EnvFilter, Registry>,
) -> Result<utils::ExitCode> {
self_update::cleanup_self_updater(process)?;

use clap::error::ErrorKind::*;
Expand Down Expand Up @@ -570,6 +575,8 @@ pub async fn main(current_dir: PathBuf, process: &Process) -> Result<utils::Exit
}
};

update_console_filter(process, &console_filter, matches.quiet, matches.verbose);

let cfg = &mut common::set_globals(current_dir, matches.quiet, process)?;

if let Some(t) = &matches.plus_toolchain {
Expand Down
8 changes: 6 additions & 2 deletions src/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ use anyhow::{Context, Result};
use tracing::subscriber::DefaultGuard;
#[cfg(feature = "test")]
use tracing_subscriber::util::SubscriberInitExt;
#[cfg(feature = "test")]
use tracing_subscriber::{reload::Handle, EnvFilter, Registry};

pub mod filesource;
pub mod terminalsource;
Expand Down Expand Up @@ -177,6 +179,7 @@ impl Default for OsProcess {
#[cfg(feature = "test")]
pub struct TestProcess {
pub process: Process,
pub console_filter: Handle<EnvFilter, Registry>,
_guard: DefaultGuard, // guard is dropped at the end of the test
}

Expand Down Expand Up @@ -230,10 +233,11 @@ impl TestProcess {
impl From<TestContext> for TestProcess {
fn from(inner: TestContext) -> Self {
let inner = Process::TestProcess(inner);
let guard = crate::cli::log::tracing_subscriber(&inner).0.set_default();
let (tracing_subscriber, console_filter) = crate::cli::log::tracing_subscriber(&inner);
Self {
process: inner,
_guard: guard,
console_filter,
_guard: tracing_subscriber.set_default(),
}
}
}
Expand Down
7 changes: 6 additions & 1 deletion src/test/mock/clitools.rs
Original file line number Diff line number Diff line change
Expand Up @@ -793,7 +793,12 @@ impl Config {
}

let tp = process::TestProcess::new(&*self.workdir.borrow(), &arg_strings, vars, "");
let process_res = rustup_mode::main(tp.process.current_dir().unwrap(), &tp.process).await;
let process_res = rustup_mode::main(
tp.process.current_dir().unwrap(),
&tp.process,
tp.console_filter.clone(),
)
.await;
// convert Err's into an ec
let ec = match process_res {
Ok(process_res) => process_res,
Expand Down
4 changes: 2 additions & 2 deletions tests/suite/cli-ui/rustup/rustup_help_cmd_stdout.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ Arguments:
[+toolchain] Release channel (e.g. +stable) or custom toolchain to set override
Options:
-v, --verbose Enable verbose output
-q, --quiet Disable progress output
-v, --verbose Set log level to 'DEBUG' if 'RUSTUP_LOG' is unset
-q, --quiet Disable progress output, set log level to 'WARN' if 'RUSTUP_LOG' is unset
-h, --help Print help
-V, --version Print version
Expand Down
4 changes: 2 additions & 2 deletions tests/suite/cli-ui/rustup/rustup_help_flag_stdout.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ Arguments:
[+toolchain] Release channel (e.g. +stable) or custom toolchain to set override
Options:
-v, --verbose Enable verbose output
-q, --quiet Disable progress output
-v, --verbose Set log level to 'DEBUG' if 'RUSTUP_LOG' is unset
-q, --quiet Disable progress output, set log level to 'WARN' if 'RUSTUP_LOG' is unset
-h, --help Print help
-V, --version Print version
Expand Down
4 changes: 2 additions & 2 deletions tests/suite/cli-ui/rustup/rustup_only_options_stdout.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ Arguments:
Options:
-v, --verbose
Enable verbose output
Set log level to 'DEBUG' if 'RUSTUP_LOG' is unset
-q, --quiet
Disable progress output
Disable progress output, set log level to 'WARN' if 'RUSTUP_LOG' is unset
-h, --help
Print help
Expand Down
19 changes: 1 addition & 18 deletions tests/suite/cli_rustup.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,24 +84,7 @@ async fn rustup_stable_quiet() {
"
),
for_host!(
r"info: syncing channel updates for 'stable-{0}'
info: latest update on 2015-01-02, rust version 1.1.0 (hash-stable-1.1.0)
info: downloading component 'cargo'
info: downloading component 'rust-docs'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: removing previous version of component 'cargo'
info: removing previous version of component 'rust-docs'
info: removing previous version of component 'rust-std'
info: removing previous version of component 'rustc'
info: installing component 'cargo'
info: installing component 'rust-docs'
info: installing component 'rust-std'
info: installing component 'rustc'
info: cleaning up downloads & tmp directories
"
),
"",
)
.await;
}
Expand Down

0 comments on commit b15e0a0

Please sign in to comment.