feat: use config json
This commit is contained in:
30
src/main.rs
30
src/main.rs
@@ -11,32 +11,38 @@ use std::path::{Path, PathBuf};
|
||||
use rust_util::util_file;
|
||||
pub use docker_util::DockerCmd;
|
||||
|
||||
const MIRROR_USTC: &str = "git://mirrors.ustc.edu.cn/crates.io-index";
|
||||
|
||||
fn main() {
|
||||
information!("dockerbuild v0.1");
|
||||
|
||||
let docker_image = "rust:1.47";
|
||||
let docker_build_config = config::load_docker_build_config().expect("Read config failed, not found or parse error!");
|
||||
let docker_image = &docker_build_config.image.expect("Image is not configed in config file!");
|
||||
|
||||
let docker_registry_path_buf =get_resolved_docker_registry(docker_image).expect("Cannot find $HOME !");
|
||||
let docker_registry = docker_registry_path_buf.to_str().expect("Cannot find $HOME !!");
|
||||
|
||||
let p = Path::new(&docker_registry);
|
||||
if !p.exists() {
|
||||
if let Err(e) = fs::create_dir_all(&docker_registry) {
|
||||
failure!("Create dir failed: {:?}, error: {}", p, e);
|
||||
return;
|
||||
}
|
||||
}
|
||||
check_docker_registry_exists(&docker_registry).expect("Check docker registry exists failed!");
|
||||
|
||||
let args_iter = env::args().skip(1);
|
||||
let args = args_iter.map(|a| a.to_owned()).collect::<Vec<_>>();
|
||||
let mut docker_cmd = DockerCmd::new(docker_image);
|
||||
docker_cmd.add_volumn(docker_registry, "/usr/local/cargo/registry")
|
||||
.mirror(MIRROR_USTC);
|
||||
docker_cmd.add_volumn(docker_registry, "/usr/local/cargo/registry");
|
||||
if let Some(mirror) = &docker_build_config.mirror {
|
||||
docker_cmd.mirror(mirror);
|
||||
}
|
||||
docker_cmd.exec(&args).unwrap();
|
||||
}
|
||||
|
||||
fn check_docker_registry_exists(docker_registry: &str) -> Option<()> {
|
||||
let p = Path::new(docker_registry);
|
||||
if !p.exists() {
|
||||
if let Err(e) = fs::create_dir_all(&docker_registry) {
|
||||
failure!("Create dir failed: {:?}, error: {}", p, e);
|
||||
return None;
|
||||
}
|
||||
}
|
||||
Some(())
|
||||
}
|
||||
|
||||
fn get_resolved_docker_registry(image: &str) -> Option<PathBuf> {
|
||||
util_file::get_absolute_path(&get_docker_registry(image))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user