From f06a71149bdeeac0c88dba6e1ad0774487b5d3de Mon Sep 17 00:00:00 2001 From: Ken Matsui <26405363+ken-matsui@users.noreply.github.com> Date: Sun, 7 Nov 2021 10:25:04 +0900 Subject: [PATCH] Support early stopping too old pre-installed `tidy` command for macOS in the HTML checker --- src/tools/html-checker/main.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/tools/html-checker/main.rs b/src/tools/html-checker/main.rs index 7bdf527d8842b..f52fbdfe2d7dc 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 . 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::>(); if args.len() != 2 { return Err(format!("Usage: {} ", args[0])); } + #[cfg(target_os = "macos")] + check_tidy_version()?; println!("Running HTML checker...");