Skip to content

Commit

Permalink
feat(cli): use info! instead of println!
Browse files Browse the repository at this point in the history
This makes it ease to respect the quiet arg.
  • Loading branch information
fiji-flo committed Jan 28, 2025
1 parent 1d78439 commit 797e299
Show file tree
Hide file tree
Showing 14 changed files with 97 additions and 72 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ schemars = { version = "0.8", features = ["chrono"] }
pretty_yaml = "0.5"
yaml_parser = "0.2"
const_format = "0.2"
dialoguer = "0.11"

[dependencies]
rari-doc.workspace = true
Expand All @@ -114,6 +115,7 @@ tracing-subscriber.workspace = true
anyhow.workspace = true
dashmap.workspace = true
schemars.workspace = true
dialoguer.workspace = true

self_update = { version = "0.42", default-features = false, features = [
"rustls",
Expand All @@ -126,3 +128,6 @@ tabwriter = "1"
axum = "0.8"
tokio = "1"
dotenvy = "0.15"

[lints.clippy]
print_stdout = "deny"
2 changes: 1 addition & 1 deletion crates/css-definition-syntax/src/tokenizer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ impl Tokenizer {
}

pub fn error(&self, message: &str) {
println!("Tokenizer error: {}", message);
eprintln!("Tokenizer error: {}", message);
panic!("Tokenizer error: {}", message);
}
}
87 changes: 53 additions & 34 deletions crates/rari-cli/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use std::borrow::Cow;
use std::collections::HashMap;
use std::env;
use std::fs::{self, File};
use std::io::{self, BufWriter, Write};
use std::io::{BufWriter, Write};
use std::path::PathBuf;
use std::sync::mpsc::channel;
use std::sync::Arc;
Expand All @@ -12,6 +12,8 @@ use anyhow::{anyhow, Error};
use clap::{Args, Parser, Subcommand};
use clap_verbosity_flag::Verbosity;
use dashmap::DashMap;
use dialoguer::theme::ColorfulTheme;
use dialoguer::Confirm;
use rari_doc::build::{
build_blog_pages, build_contributor_spotlight_pages, build_curriculum_pages, build_docs,
build_generic_pages, build_spas, build_top_level_meta,
Expand Down Expand Up @@ -39,7 +41,8 @@ use rari_types::settings::Settings;
use schemars::schema_for;
use self_update::cargo_crate_version;
use tabwriter::TabWriter;
use tracing::Level;
use tracing::level_filters::LevelFilter;
use tracing::{info, Level};
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
use tracing_subscriber::{filter, Layer};
Expand Down Expand Up @@ -211,7 +214,7 @@ fn main() -> Result<(), Error> {
.unwrap_or(Cow::Borrowed(".env"))
.as_ref(),
) {
println!("Using env_file: {}", env_file.display())
info!("Using env_file: {}", env_file.display())
}
let cli = Cli::parse();
if !cli.skip_updates {
Expand All @@ -223,9 +226,18 @@ fn main() -> Result<(), Error> {
rari_deps::popularities::update_popularities(rari_types::globals::data_dir())?;
}

let fmt_filter = filter::Targets::new()
.with_target("rari_doc", cli.verbose.tracing_level_filter())
.with_target("rari", cli.verbose.tracing_level_filter());
let fmt_filter =
filter::Targets::new().with_target("rari_doc", cli.verbose.tracing_level_filter());

let cli_level = if cli.verbose.is_silent() {
LevelFilter::OFF
} else {
LevelFilter::INFO
};
let cli_filter = filter::Targets::new()
.with_target("rari", cli_level)
.with_target("rari_tools", cli_level)
.with_target("rari_doc", LevelFilter::OFF);

let memory_filter = filter::Targets::new()
.with_target("rari_doc", Level::WARN)
Expand All @@ -238,6 +250,14 @@ fn main() -> Result<(), Error> {
.without_time()
.with_filter(fmt_filter),
)
.with(
tracing_subscriber::fmt::layer()
.without_time()
.with_level(false)
.compact()
.with_target(false)
.with_filter(cli_filter),
)
.with(memory_layer.clone().with_filter(memory_filter))
.init();

Expand Down Expand Up @@ -270,13 +290,13 @@ fn main() -> Result<(), Error> {
}
let mut out = stats.into_iter().collect::<Vec<(String, usize)>>();
out.sort_by(|(_, a), (_, b)| b.cmp(a));
println!("--- templ summary ---");
info!("--- templ summary ---");
let mut tw = TabWriter::new(vec![]);
for (i, (templ, count)) in out.iter().enumerate() {
writeln!(&mut tw, "{:2}\t{templ}\t{count:4}", i + 1)
.expect("unable to write");
}
print!("{}", String::from_utf8_lossy(&tw.into_inner().unwrap()));
info!("{}", String::from_utf8_lossy(&tw.into_inner().unwrap()));
});
Some((recorder_handler, tx))
} else {
Expand All @@ -294,7 +314,7 @@ fn main() -> Result<(), Error> {
}
let mut urls = Vec::new();
let mut docs = Vec::new();
println!("Building everything 🛠️");
info!("Building everything 🛠️");
if args.all || !args.no_basic || args.content || !args.files.is_empty() {
let start = std::time::Instant::now();
docs = if !args.files.is_empty() {
Expand All @@ -309,7 +329,7 @@ fn main() -> Result<(), Error> {
} else {
read_and_cache_doc_pages()?
};
println!(
info!(
"Took: {: >10.3?} for reading {} docs",
start.elapsed(),
docs.len()
Expand All @@ -320,30 +340,30 @@ fn main() -> Result<(), Error> {
let spas = build_spas()?;
let num = spas.len();
urls.extend(spas);
println!("Took: {: >10.3?} to build spas ({num})", start.elapsed(),);
info!("Took: {: >10.3?} to build spas ({num})", start.elapsed(),);
}
if args.all || !args.no_basic || args.content || !args.files.is_empty() {
let start = std::time::Instant::now();
let (docs, meta) = build_docs(&docs)?;
build_top_level_meta(meta)?;
let num = docs.len();
urls.extend(docs);
println!(
info!(
"Took: {: >10.3?} to build content docs ({num})",
start.elapsed()
);
}
if args.all || !args.no_basic || args.search_index {
let start = std::time::Instant::now();
build_search_index(&docs)?;
println!("Took: {: >10.3?} to build search index", start.elapsed());
info!("Took: {: >10.3?} to build search index", start.elapsed());
}
if args.all || args.generics {
let start = std::time::Instant::now();
let generic_pages = build_generic_pages()?;
let num = generic_pages.len();
urls.extend(generic_pages);
println!(
info!(
"Took: {: >10.3?} to build generic pages ({num})",
start.elapsed()
);
Expand All @@ -353,7 +373,7 @@ fn main() -> Result<(), Error> {
let curriclum_pages = build_curriculum_pages()?;
let num = curriclum_pages.len();
urls.extend(curriclum_pages);
println!(
info!(
"Took: {: >10.3?} to build curriculum pages ({num})",
start.elapsed()
);
Expand All @@ -363,14 +383,14 @@ fn main() -> Result<(), Error> {
let blog_pages = build_blog_pages()?;
let num = blog_pages.len();
urls.extend(blog_pages);
println!("Took: {: >10.3?} to build blog ({num})", start.elapsed());
info!("Took: {: >10.3?} to build blog ({num})", start.elapsed());
}
if args.all || args.spotlights {
let start = std::time::Instant::now();
let contributor_spotlight_pages = build_contributor_spotlight_pages()?;
let num = contributor_spotlight_pages.len();
urls.extend(contributor_spotlight_pages);
println!(
info!(
"Took: {: >10.3?} to build contributor spotlights ({num})",
start.elapsed()
);
Expand All @@ -381,7 +401,7 @@ fn main() -> Result<(), Error> {
let out_path = build_out_root()?;
fs::create_dir_all(out_path).unwrap();
sitemaps.write_all_sitemaps(out_path)?;
println!(
info!(
"Took: {: >10.3?} to write sitemaps ({})",
start.elapsed(),
sitemaps.sitemap_meta.len()
Expand Down Expand Up @@ -410,10 +430,10 @@ fn main() -> Result<(), Error> {
serve::serve()?
}
Commands::GitHistory => {
println!("Gathering history 📜");
info!("Gathering history 📜");
let start = std::time::Instant::now();
gather_history()?;
println!("Took: {:?}", start.elapsed());
info!("Took: {:?}", start.elapsed());
}
Commands::Content(content_subcommand) => match content_subcommand {
ContentSubcommand::Move(args) => {
Expand Down Expand Up @@ -498,42 +518,41 @@ fn update(version: Option<String>) -> Result<(), Error> {
let target_version = match (&latest, &target_release) {
(None, None) => return Err(anyhow!("No latest release, specigy a version!")),
(None, Some(target)) => {
println!("Updating rari to {}", target.version);
info!("Updating rari to {}", target.version);
&target.version
}
(Some(latest), None) => {
println!("Updating rari to {} (latest)", latest.version);
info!("Updating rari to {} (latest)", latest.version);
&latest.version
}
(Some(latest), Some(target)) if latest.version == target.version => {
println!("Updating rari to {} (latest)", latest.version);
info!("Updating rari to {} (latest)", latest.version);
&latest.version
}
(Some(latest), Some(target)) => {
println!(
info!(
"Updating rari to {} (latest {})",
target.version, latest.version
);
&target.version
}
};

println!("rari `{target_version}` will be downloaded/extracted.");
println!(
info!("rari `{target_version}` will be downloaded/extracted.");
info!(
"The current rari ({}) at version `{}` will be replaced.",
update.bin_install_path().to_string_lossy(),
update.current_version()
);
print!("Do you want to continue? [Y/n] ");
io::stdout().flush()?;

let mut s = String::new();
io::stdin().read_line(&mut s)?;
let s = s.trim().to_lowercase();
if !s.is_empty() && s != "y" {
if !Confirm::with_theme(&ColorfulTheme::default())
.with_prompt("Do you want to continue?")
.default(true)
.interact()
.unwrap_or_default()
{
return Err(anyhow!("Update aborted"));
}
let status = update.update()?;
println!("\n\nrari updated to `{}`", status.version());
info!("\n\nrari updated to `{}`", status.version());
Ok(())
}
2 changes: 1 addition & 1 deletion crates/rari-tools/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ serde_yaml_ng.workspace = true
pretty_yaml.workspace = true
yaml_parser.workspace = true
const_format.workspace = true
dialoguer.workspace = true

dialoguer = "0.11"
csv = "1"

[dev-dependencies]
Expand Down
2 changes: 1 addition & 1 deletion crates/rari-tools/src/add_redirect.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ pub fn add_redirect(from_url: &str, to_url: &str) -> Result<(), ToolError> {
let green = Style::new().green();
let bold = Style::new().bold();

println!(
tracing::info!(
"{} {} {} {}",
green.apply_to("Saved"),
bold.apply_to(from_url),
Expand Down
10 changes: 5 additions & 5 deletions crates/rari-tools/src/move.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ pub fn r#move(
let bold = Style::new().bold();
let changes = do_move(old_slug, new_slug, locale, true)?;
if changes.is_empty() {
println!("{}", style("No changes would be made").green());
tracing::info!("{}", style("No changes would be made").green());
return Ok(());
} else {
println!(
tracing::info!(
"{} {} {} {} {} {}",
green.apply_to("This will move"),
bold.apply_to(changes.len()),
Expand All @@ -50,7 +50,7 @@ pub fn r#move(
green.apply_to(new_slug)
);
for (old_slug, new_slug) in changes {
println!(
tracing::info!(
"{} -> {}",
red.apply_to(&old_slug),
green.apply_to(&new_slug)
Expand All @@ -66,7 +66,7 @@ pub fn r#move(
.unwrap_or_default()
{
let moved = do_move(old_slug, new_slug, locale, false)?;
println!(
tracing::info!(
"{} {} {}",
green.apply_to("Moved"),
bold.apply_to(moved.len()),
Expand Down Expand Up @@ -130,7 +130,7 @@ fn do_move(
doc.meta.slug = new_slug.to_string();
Some(doc.to_owned())
} else {
println!("This does not look like a document");
tracing::info!("This does not look like a document");
None
}
});
Expand Down
Loading

0 comments on commit 797e299

Please sign in to comment.