diff options
-rw-r--r-- | src/main.rs | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index 8048fc2..231e55d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,7 @@ +use anyhow::bail; use std::fs::File; use std::path::Path; +use std::process::Command; const LATEST: &str = "https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.1.1.tar.xz"; @@ -7,11 +9,9 @@ const CONFIG: &str = r#" CONFIG_IPV6=y "#; -fn download_kernel() -> anyhow::Result<()> { +fn download_kernel(file_name: &str) -> anyhow::Result<()> { println!("Downloading kernel source..."); - let file_name = Path::new(LATEST).file_name().unwrap().to_str().unwrap(); - let mut file = File::create(file_name)?; reqwest::blocking::get(LATEST)? @@ -23,7 +23,18 @@ fn download_kernel() -> anyhow::Result<()> { } fn main() -> anyhow::Result<()> { - download_kernel()?; + let file_name = Path::new(LATEST).file_name().unwrap().to_str().unwrap(); + + download_kernel(file_name)?; + + let mut untar = Command::new("tar"); + untar.arg("xf").arg(file_name); + + if !untar.spawn()?.wait()?.success() { + bail!("untar failed"); + } + + println!("Kernel source unpacked successfully"); Ok(()) } |