From a1d7a7c1172ec95baeff81a72eeab63c6e883ca3 Mon Sep 17 00:00:00 2001
From: Jiahao XU <Jiahao_XU@outlook.com>
Date: Wed, 20 Jul 2022 17:37:02 +1000
Subject: [PATCH] Refactor: Extract new mod `jobserver_client.rs`

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
---
 src/helpers.rs                  | 21 +++------------------
 src/helpers/jobserver_client.rs | 20 ++++++++++++++++++++
 2 files changed, 23 insertions(+), 18 deletions(-)
 create mode 100644 src/helpers/jobserver_client.rs

diff --git a/src/helpers.rs b/src/helpers.rs
index 5ad0e7d6..3dc2de96 100644
--- a/src/helpers.rs
+++ b/src/helpers.rs
@@ -1,9 +1,7 @@
 use std::fmt::Debug;
 use std::fs;
 use std::io;
-use std::num::NonZeroUsize;
 use std::path::{Path, PathBuf};
-use std::thread::available_parallelism;
 
 use bytes::Bytes;
 use cargo_toml::Manifest;
@@ -30,6 +28,9 @@ pub use ui_thread::UIThread;
 mod extracter;
 mod stream_readable;
 
+mod jobserver_client;
+pub use jobserver_client::*;
+
 mod path_ext;
 pub use path_ext::*;
 
@@ -46,22 +47,6 @@ pub async fn await_task<T>(task: tokio::task::JoinHandle<miette::Result<T>>) ->
     }
 }
 
-pub fn create_jobserver_client() -> Result<jobserver::Client, BinstallError> {
-    use jobserver::Client;
-
-    // Safety:
-    //
-    // Client::from_env is unsafe because from_raw_fd is unsafe.
-    // It doesn't do anything that is actually unsafe, like
-    // dereferencing pointer.
-    if let Some(client) = unsafe { Client::from_env() } {
-        Ok(client)
-    } else {
-        let ncore = available_parallelism().map(NonZeroUsize::get).unwrap_or(1);
-        Ok(Client::new(ncore)?)
-    }
-}
-
 /// Load binstall metadata from the crate `Cargo.toml` at the provided path
 pub fn load_manifest_path<P: AsRef<Path>>(
     manifest_path: P,
diff --git a/src/helpers/jobserver_client.rs b/src/helpers/jobserver_client.rs
new file mode 100644
index 00000000..740fcc38
--- /dev/null
+++ b/src/helpers/jobserver_client.rs
@@ -0,0 +1,20 @@
+use std::num::NonZeroUsize;
+use std::thread::available_parallelism;
+
+use crate::BinstallError;
+
+pub fn create_jobserver_client() -> Result<jobserver::Client, BinstallError> {
+    use jobserver::Client;
+
+    // Safety:
+    //
+    // Client::from_env is unsafe because from_raw_fd is unsafe.
+    // It doesn't do anything that is actually unsafe, like
+    // dereferencing pointer.
+    if let Some(client) = unsafe { Client::from_env() } {
+        Ok(client)
+    } else {
+        let ncore = available_parallelism().map(NonZeroUsize::get).unwrap_or(1);
+        Ok(Client::new(ncore)?)
+    }
+}