82dd963693
* Add: xtask to check themes for validation warnings * Update: tidied up runtime paths * Update: test build workflow * Update: address clippy lints * Revert: only trigger workflow on push to master branch * Add: Theme::from_keys factory method to construct theme from Toml keys * Update: returning validation failures in Loader.load method * Update: commented out invalid keys from affected themes * Update: correct invalid keys so that valid styles still applied * Update: include default and base16_default themes in check * Update: renamed validation_failures to load_errors * Update: introduce load_with_warnings helper function and centralise logging of theme warnings * Update: use consistent naming throughout
33 lines
902 B
Rust
33 lines
902 B
Rust
use helix_view::theme::Loader;
|
|
|
|
use crate::{path, DynError};
|
|
|
|
pub fn theme_check() -> Result<(), DynError> {
|
|
let theme_names = [
|
|
vec!["default".to_string(), "base16_default".to_string()],
|
|
Loader::read_names(&path::themes()),
|
|
]
|
|
.concat();
|
|
let loader = Loader::new(&[path::runtime()]);
|
|
let mut errors_present = false;
|
|
|
|
for name in theme_names {
|
|
let (_, warnings) = loader.load_with_warnings(&name).unwrap();
|
|
|
|
if !warnings.is_empty() {
|
|
errors_present = true;
|
|
println!("Theme '{name}' loaded with errors:");
|
|
for warning in warnings {
|
|
println!("\t* {}", warning);
|
|
}
|
|
}
|
|
}
|
|
|
|
match errors_present {
|
|
true => Err("Errors found when loading bundled themes".into()),
|
|
false => {
|
|
println!("Theme check successful!");
|
|
Ok(())
|
|
}
|
|
}
|
|
}
|