use std::{ env, path::{Path, PathBuf}, process::Command, }; pub fn get(target_triple: &str, out_dir: &Path) { if let Ok(cfltk_path) = env::var("CFLTK_BUNDLE_DIR") { println!("cargo:rustc-link-search=native={}", cfltk_path); } else { let url = if let Ok(cfltk_url) = env::var("CFLTK_BUNDLE_URL") { PathBuf::from(cfltk_url) } else { PathBuf::from(format!( "{}/lib_{}.tar.gz", env::var("CFLTK_BUNDLE_URL_PREFIX").unwrap_or_else(|_| String::from( "https://github.com/MoAlyousef/cfltk/releases/latest/download" )), target_triple, )) }; let curl_status = Command::new("curl") .args(["-LOkf", url.to_str().unwrap()]) .current_dir(out_dir) .status() .expect("Curl is needed to download the bundled libraries!"); if !curl_status.success() { panic!("Download bundled libraries from {:?} failed", url) } let tar_status = Command::new("tar") .args(["-xzvf", url.file_name().unwrap().to_str().unwrap()]) .current_dir(out_dir) .status() .expect("Tar is needed to upack the bundled libraries!"); if !tar_status.success() { panic!("Unpack bundled libraries failed") } } }