1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
use std::process::{Command}; use std::env; use crate::binaries; use crate::binaries::platform; use std::path::{PathBuf, Path}; pub fn main(args: &Vec<String>) { let dir = binaries::global_cache_dir(); binaries::fetch_native(dir.clone()).expect("could not fetch binaries"); let prisma = binaries::prisma_cli_name(); let mut cmd = Command::new(dir.join(prisma)); cmd.args(args); let binary_name = platform::check_for_extension( platform::name(), platform::binary_platform_name() ); cmd.envs(env::vars()); cmd.env("PRISMA_HIDE_UPDATE_MESSAGE", "true"); for e in &binaries::ENGINES { let value: String; match env::var(e.env.to_string()) { Ok(var) => value = var, Err(_) => value = dir .join(binaries::ENGINE_VERSION) .join(format!("prisma-{}-{}", e.name.to_string(), binary_name)) .into_os_string().into_string().unwrap() } cmd.env(e.env.to_string(), value); } cmd.spawn().unwrap(); }