Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-loader/src/grammar.rs')
-rw-r--r--helix-loader/src/grammar.rs31
1 files changed, 29 insertions, 2 deletions
diff --git a/helix-loader/src/grammar.rs b/helix-loader/src/grammar.rs
index 7f83b70f..4e9f2156 100644
--- a/helix-loader/src/grammar.rs
+++ b/helix-loader/src/grammar.rs
@@ -1,6 +1,8 @@
use anyhow::{anyhow, bail, Context, Result};
use serde::{Deserialize, Serialize};
use std::fs;
+use std::sync::atomic::{AtomicUsize, Ordering};
+use std::sync::Arc;
use std::time::SystemTime;
use std::{
collections::HashSet,
@@ -93,8 +95,21 @@ pub fn fetch_grammars(strict: bool) -> Result<()> {
let mut grammars = get_grammar_configs()?;
grammars.retain(|grammar| !matches!(grammar.source, GrammarSource::Local { .. }));
- println!("Fetching {} grammars", grammars.len());
- let results = run_parallel(grammars, fetch_grammar);
+ let total = grammars.len();
+ let counter = Arc::new(AtomicUsize::new(0));
+
+ println!("Fetching {} grammars", total);
+ let counter = Arc::clone(&counter);
+
+ let results = run_parallel(grammars, move |grammar| {
+ let current = counter.fetch_add(1, Ordering::Relaxed) + 1;
+
+ println!(
+ "Fetching grammars ({}/{}): {}",
+ current, total, grammar.grammar_id
+ );
+ fetch_grammar(grammar)
+ });
let mut errors = Vec::new();
let mut git_updated = Vec::new();
@@ -153,8 +168,20 @@ pub fn build_grammars(target: Option<String>, strict: bool) -> Result<()> {
ensure_git_is_available()?;
let grammars = get_grammar_configs()?;
+
+ let total = grammars.len();
+ let counter = Arc::new(AtomicUsize::new(0));
+
println!("Building {} grammars", grammars.len());
+
+ let counter = Arc::clone(&counter);
let results = run_parallel(grammars, move |grammar| {
+ let current = counter.fetch_add(1, Ordering::Relaxed) + 1;
+
+ println!(
+ "Building grammars ({}/{}): {}",
+ current, total, grammar.grammar_id
+ );
build_grammar(grammar, target.as_deref())
});