diff options
| author | Ken Matsui <26405363+ken-matsui@users.noreply.github.com> | 2021-11-07 10:25:04 +0900 |
|---|---|---|
| committer | Ken Matsui <26405363+ken-matsui@users.noreply.github.com> | 2021-11-07 10:25:04 +0900 |
| commit | f06a71149bdeeac0c88dba6e1ad0774487b5d3de (patch) | |
| tree | 390c4167877ba08477ba0038f53829ad4146ca51 /src/tools/html-checker | |
| parent | 0727994435c75fdedd3e9d226cf434089b0ab585 (diff) | |
Support early stopping too old pre-installed `tidy` command for macOS in the HTML checker
Diffstat (limited to 'src/tools/html-checker')
| -rw-r--r-- | src/tools/html-checker/main.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/tools/html-checker/main.rs b/src/tools/html-checker/main.rs index 7bdf527d884..f52fbdfe2d7 100644 --- a/src/tools/html-checker/main.rs +++ b/src/tools/html-checker/main.rs @@ -79,11 +79,34 @@ fn find_all_html_files(dir: &Path) -> (usize, usize) { (files_read, errors) } +/// Default `tidy` command for macOS is too old that it does not have `mute-id` and `mute` options. +/// `tidy` on macOS Monterey was released on 31 October 2006, and the same date can be seen seven +/// years ago at <https://stackoverflow.com/questions/22283382/overwrite-osx-tidy>. Accordingly, +/// the macOS environment using pre-installed `tidy` should immediately suspend HTML checker process +/// and show a hint to install a newer one. +#[cfg(target_os = "macos")] +fn check_tidy_version() -> Result<(), String> { + let output = Command::new("tidy").arg("-v").output().expect("failed to run tidy command"); + let version = String::from_utf8(output.stdout).expect("failed to read version of tidy command"); + if version.contains("HTML Tidy for Mac OS X released on 31 October 2006") { + eprintln!("The pre-installed HTML Tidy for macOS is not supported."); + eprintln!("Consider installing a newer one and re-running."); + eprintln!("If you're using Homebrew, you can install it by the following command:"); + eprintln!(" brew install tidy-html5"); + eprintln!(); + Err("HTML check failed: 1 error".to_string()) + } else { + Ok(()) + } +} + fn main() -> Result<(), String> { let args = env::args().collect::<Vec<_>>(); if args.len() != 2 { return Err(format!("Usage: {} <doc folder>", args[0])); } + #[cfg(target_os = "macos")] + check_tidy_version()?; println!("Running HTML checker..."); |
