From bb8601b2bafb5e68181cbbb84e6ffa4f7a72bf16 Mon Sep 17 00:00:00 2001 From: Nicolas Holzschuch Date: Tue, 23 Apr 2024 19:12:19 +0200 Subject: [PATCH] printer: make compilation on non-unix, non-windows platforms work Some of the new hyperlink work caused ripgrep to stop compiling on non-{Unix,Windows} platforms. The most popular of which is WASI. This commit makes non-{Unix,Windows} compile again. And we add a very basic WASI test in CI to catch regressions. More work is needed to make tests on non-{Unix,Windows} platforms work. And of course, this commit specifically takes the path of disabling hyperlink support for non-{Unix,Windows} platforms. --- .github/workflows/ci.yml | 15 +++++++++++++++ crates/cli/src/hostname.rs | 4 ++-- crates/printer/src/hyperlink.rs | 7 +++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d21b85ab..532e2e9c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -189,6 +189,21 @@ jobs: shell: bash run: ${{ env.CARGO }} test --bin rg ${{ env.TARGET_FLAGS }} flags::defs::tests::available_shorts -- --nocapture + # Setup and compile on the wasm32-wasi target + wasm: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install Rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: stable + - name: Add wasm32-wasi target + run: rustup target add wasm32-wasi + - name: Basic build + run: cargo build --verbose + rustfmt: runs-on: ubuntu-latest steps: diff --git a/crates/cli/src/hostname.rs b/crates/cli/src/hostname.rs index 37ad54c7..0a3ae370 100644 --- a/crates/cli/src/hostname.rs +++ b/crates/cli/src/hostname.rs @@ -25,10 +25,10 @@ pub fn hostname() -> io::Result { } #[cfg(not(any(windows, unix)))] { - io::Error::new( + Err(io::Error::new( io::ErrorKind::Other, "hostname could not be found on unsupported platform", - ) + )) } } diff --git a/crates/printer/src/hyperlink.rs b/crates/printer/src/hyperlink.rs index 279258c1..ec1fd921 100644 --- a/crates/printer/src/hyperlink.rs +++ b/crates/printer/src/hyperlink.rs @@ -811,6 +811,13 @@ impl HyperlinkPath { Some(HyperlinkPath::encode(with_slash.as_bytes())) } + /// For other platforms (not windows, not unix), return None and log a debug message. + #[cfg(not(any(windows, unix)))] + pub(crate) fn from_path(original_path: &Path) -> Option { + log::debug!("hyperlinks are not supported on this platform"); + None + } + /// Percent-encodes a path. /// /// The alphanumeric ASCII characters and "-", ".", "_", "~" are unreserved