Skip to content

Commit

Permalink
Remove original single-threaded runner
Browse files Browse the repository at this point in the history
  • Loading branch information
jw013 committed Jan 8, 2024
1 parent 0aea76b commit bd95a38
Showing 1 changed file with 0 additions and 314 deletions.
314 changes: 0 additions & 314 deletions src/check_release.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,320 +146,6 @@ pub(super) fn run_check_release(
})
.expect("print failed");

let num_threads = rayon::current_num_threads();
if num_threads == 1 {
run_queries_single_threaded(
config,
&adapter,
version_change,
&queries,
&queries_to_run,
skipped_queries,
)
} else {
run_queries_multi_threaded(
config,
&adapter,
version_change,
&queries,
&queries_to_run,
skipped_queries,
)
}
}

fn run_queries_single_threaded<'a>(
config: &mut GlobalConfig,
adapter: &VersionedRustdocAdapter<'a>,
version_change: ActualSemverUpdate,
queries: &BTreeMap<String, SemverQuery>,
queries_to_run: &'a [(&String, &SemverQuery)],
skipped_queries: usize,
) -> anyhow::Result<CrateReport> {
let mut queries_with_errors = vec![];
let mut total_duration = Duration::default();
for (query_id, semver_query) in queries_to_run.iter().copied() {
let category = match semver_query.required_update {
RequiredSemverUpdate::Major => "major",
RequiredSemverUpdate::Minor => "minor",
};
config
.log_verbose(|config| {
if config.is_stderr_tty() {
colored!(
config.stderr(),
"{}{}{:>12}{} [{:9}] {:^18} {}",
fg!(Some(Color::Cyan)),
bold!(true),
"Running",
reset!(),
"",
category,
query_id,
)?;
config.stderr().flush()?;
}
Ok(())
})
.expect("print failed");

let start_instant = std::time::Instant::now();
let mut results_iter = adapter
.run_query(&semver_query.query, semver_query.arguments.clone())?
.peekable();
let peeked = results_iter.peek();
let time_to_decide = start_instant.elapsed();
total_duration += time_to_decide;

if peeked.is_none() {
config
.log_verbose(|config| {
if config.is_stderr_tty() {
write!(config.stderr(), "\r")?;
}
colored_ln(config.stderr(), |w| {
colored!(
w,
"{}{}{:>12}{} [{:>8.3}s] {:^18} {}",
fg!(Some(Color::Green)),
bold!(true),
"PASS",
reset!(),
time_to_decide.as_secs_f32(),
category,
query_id,
)
})?;
Ok(())
})
.expect("print failed");
} else {
queries_with_errors.push(QueryWithResults::new(query_id.as_str(), results_iter));

config
.log_verbose(|config| {
if config.is_stderr_tty() {
write!(config.stderr(), "\r")?;
}
colored_ln(config.stderr(), |w| {
colored!(
w,
"{}{}{:>12}{} [{:>8.3}s] {:^18} {}",
fg!(Some(Color::Red)),
bold!(true),
"FAIL",
reset!(),
time_to_decide.as_secs_f32(),
category,
query_id,
)
})?;
Ok(())
})
.expect("print failed");
}
}

if !queries_with_errors.is_empty() {
config
.shell_print(
"Completed",
format_args!(
"[{:>8.3}s] {} checks; {} passed, {} failed, {} unnecessary",
total_duration.as_secs_f32(),
queries_to_run.len(),
queries_to_run.len() - queries_with_errors.len(),
queries_with_errors.len(),
skipped_queries,
),
Color::Red,
true,
)
.expect("print failed");

let mut required_versions = vec![];

for query_with_results in queries_with_errors {
let semver_query = &queries[query_with_results.name];
required_versions.push(semver_query.required_update);
config
.log_info(|config| {
colored_ln(config.stdout(), |w| {
colored!(
w,
"\n--- failure {}: {} ---\n",
&semver_query.id,
&semver_query.human_readable_name,
)
})?;
Ok(())
})
.expect("print failed");

if let Some(ref_link) = semver_query.reference_link.as_deref() {
config.log_info(|config| {
colored_ln(config.stdout(), |w| {
colored!(
w,
"{}Description:{}\n{}\n{:>12} {}\n{:>12} {}\n",
bold!(true),
reset!(),
&semver_query.error_message,
"ref:",
ref_link,
"impl:",
format!(
"https://github.com/obi1kenobi/cargo-semver-checks/tree/v{}/src/lints/{}.ron",
crate_version!(),
semver_query.id,
)
)
})?;
Ok(())
})
.expect("print failed");
} else {
config.log_info(|config| {
colored_ln(config.stdout(), |w| {
colored!(
w,
"{}Description:{}\n{}\n{:>12} {}\n",
bold!(true),
reset!(),
&semver_query.error_message,
"impl:",
format!(
"https://github.com/obi1kenobi/cargo-semver-checks/tree/v{}/src/lints/{}.ron",
crate_version!(),
semver_query.id,
)
)
})?;
Ok(())
})
.expect("print failed");
}

config
.log_info(|config| {
colored_ln(config.stdout(), |w| {
colored!(w, "{}Failed in:{}", bold!(true), reset!())
})?;
Ok(())
})
.expect("print failed");

let start_instant = std::time::Instant::now();
for semver_violation_result in query_with_results.results {
let pretty_result: BTreeMap<Arc<str>, TransparentValue> = semver_violation_result
.into_iter()
.map(|(k, v)| (k, v.into()))
.collect();

if let Some(template) = semver_query.per_result_error_template.as_deref() {
let message = config
.handlebars()
.render_template(template, &pretty_result)
.context("Error instantiating semver query template.")
.expect("could not materialize template");
config
.log_info(|config| {
colored_ln(config.stdout(), |w| colored!(w, " {}", message,))?;
Ok(())
})
.expect("print failed");

config
.log_extra_verbose(|config| {
colored_ln(config.stdout(), |w| {
let serde_pretty = serde_json::to_string_pretty(&pretty_result)
.expect("serde failed");
let indented_serde = serde_pretty
.split('\n')
.map(|line| format!(" {line}"))
.join("\n");
colored!(w, " lint rule output values:\n{}", indented_serde)
})
.map_err(|e| e.into())
})
.expect("print failed");
} else {
config
.log_info(|config| {
colored_ln(config.stdout(), |w| {
colored!(
w,
"{}\n",
serde_json::to_string_pretty(&pretty_result)
.expect("serde failed"),
)
})
.expect("print failed");
Ok(())
})
.expect("print failed");
}
}
total_duration += start_instant.elapsed();
}

let required_bump = if required_versions.contains(&RequiredSemverUpdate::Major) {
RequiredSemverUpdate::Major
} else if required_versions.contains(&RequiredSemverUpdate::Minor) {
RequiredSemverUpdate::Minor
} else {
unreachable!("{:?}", required_versions)
};

config
.shell_print(
"Final",
format_args!(
"[{:>8.3}s] semver requires new {} version: {} major and {} minor checks failed",
total_duration.as_secs_f32(),
required_bump.as_str(),
required_versions.iter().filter(|x| *x == &RequiredSemverUpdate::Major).count(),
required_versions.iter().filter(|x| *x == &RequiredSemverUpdate::Minor).count(),
),
Color::Red,
true,
)
.expect("print failed");

Ok(CrateReport {
required_bump: Some(required_bump.into()),
detected_bump: version_change,
})
} else {
config
.shell_print(
"Completed",
format_args!(
"[{:>8.3}s] {} checks; {} passed, {} unnecessary",
total_duration.as_secs_f32(),
queries_to_run.len(),
queries_to_run.len(),
skipped_queries,
),
Color::Green,
true,
)
.expect("print failed");
Ok(CrateReport {
detected_bump: version_change,
required_bump: None,
})
}
}

fn run_queries_multi_threaded<'a>(
config: &mut GlobalConfig,
adapter: &VersionedRustdocAdapter<'a>,
version_change: ActualSemverUpdate,
queries: &BTreeMap<String, SemverQuery>,
queries_to_run: &'a [(&String, &SemverQuery)],
skipped_queries: usize,
) -> anyhow::Result<CrateReport> {
let start = std::time::Instant::now();
let mut all_results = queries_to_run
.par_iter()
Expand Down

0 comments on commit bd95a38

Please sign in to comment.