feat: add get_resolved_docker_registry
This commit is contained in:
@@ -2,5 +2,5 @@ use serde::{Serialize, Deserialize};
|
|||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct DockerBuildConfig {
|
pub struct DockerBuildConfig {
|
||||||
|
image: Option<String>,
|
||||||
}
|
}
|
||||||
@@ -82,9 +82,10 @@ impl DockerCmd {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let mut sub_cmd = String::with_capacity(1024);
|
let mut sub_cmd = String::with_capacity(1024);
|
||||||
if let Some(mirror) = self.mirror {
|
if let Some(mirror) = &self.mirror {
|
||||||
sub_cmd.push_str(&make_cmd(&mirror));
|
sub_cmd.push_str(&make_cmd(mirror));
|
||||||
sub_cmd.push_str("\n");
|
sub_cmd.push_str("\n");
|
||||||
|
success!("Build crates mirror: {}", mirror);
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut builder_cmd = builder_name;
|
let mut builder_cmd = builder_name;
|
||||||
@@ -101,16 +102,22 @@ impl DockerCmd {
|
|||||||
}
|
}
|
||||||
cmds_iter.for_each(|c| { sub_build_cmd.push(c.clone()); });
|
cmds_iter.for_each(|c| { sub_build_cmd.push(c.clone()); });
|
||||||
|
|
||||||
sub_cmd.push_str(&builder_cmd);
|
let mut final_sub_cmd = String::with_capacity(512);
|
||||||
sub_cmd.push(' ');
|
final_sub_cmd.push_str(&builder_cmd);
|
||||||
sub_cmd.push_str(&sub_build_cmd.iter().map(|arg| escape_arg(arg)).collect::<Vec<_>>().join(" "));
|
final_sub_cmd.push(' ');
|
||||||
|
final_sub_cmd.push_str(&sub_build_cmd.iter().map(|arg| escape_arg(arg)).collect::<Vec<_>>().join(" "));
|
||||||
|
sub_cmd.push_str(&final_sub_cmd);
|
||||||
|
|
||||||
fs::write(DCOLER_TEMP_CMD, &sub_cmd).ok();
|
fs::write(DCOLER_TEMP_CMD, &sub_cmd).ok();
|
||||||
|
|
||||||
cmd.args(vec!["bash", DCOLER_TEMP_CMD]);
|
cmd.args(vec!["bash", DCOLER_TEMP_CMD]);
|
||||||
|
|
||||||
success!("Docker cmd exec: {:?}", cmd);
|
success!("Docker cmd exec: {:?}", cmd);
|
||||||
success!("Docker temp sub cmd: {}", sub_cmd);
|
if let Some(mirror) = &self.mirror {
|
||||||
|
success!("Build crates mirror: {}", mirror);
|
||||||
|
}
|
||||||
|
success!("Build command: {}", final_sub_cmd);
|
||||||
|
debugging!("Docker temp sub cmd: {}", sub_cmd);
|
||||||
let r = util_cmd::run_command_and_wait(&mut cmd).map_err(|e| e.into());
|
let r = util_cmd::run_command_and_wait(&mut cmd).map_err(|e| e.into());
|
||||||
fs::remove_file(DCOLER_TEMP_CMD).ok();
|
fs::remove_file(DCOLER_TEMP_CMD).ok();
|
||||||
r
|
r
|
||||||
|
|||||||
28
src/main.rs
28
src/main.rs
@@ -7,17 +7,18 @@ mod docker_util;
|
|||||||
|
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::path::Path;
|
use std::path::{Path, PathBuf};
|
||||||
use rust_util::util_file;
|
use rust_util::util_file;
|
||||||
pub use docker_util::DockerCmd;
|
pub use docker_util::DockerCmd;
|
||||||
|
|
||||||
const DOCKER_REGISTRY: &str = "~/.dockerbuild/register/rust_1_47";
|
|
||||||
const MIRROR_USTC: &str = "git://mirrors.ustc.edu.cn/crates.io-index";
|
const MIRROR_USTC: &str = "git://mirrors.ustc.edu.cn/crates.io-index";
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
information!("dockerbuild v0.1");
|
information!("dockerbuild v0.1");
|
||||||
|
|
||||||
let docker_registry_path_buf = util_file::get_absolute_path(DOCKER_REGISTRY).expect("Cannot find $HOME !");
|
let docker_image = "rust:1.47";
|
||||||
|
|
||||||
|
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 docker_registry = docker_registry_path_buf.to_str().expect("Cannot find $HOME !!");
|
||||||
|
|
||||||
let p = Path::new(&docker_registry);
|
let p = Path::new(&docker_registry);
|
||||||
@@ -30,9 +31,28 @@ fn main() {
|
|||||||
|
|
||||||
let args_iter = env::args().skip(1);
|
let args_iter = env::args().skip(1);
|
||||||
let args = args_iter.map(|a| a.to_owned()).collect::<Vec<_>>();
|
let args = args_iter.map(|a| a.to_owned()).collect::<Vec<_>>();
|
||||||
let mut docker_cmd = DockerCmd::new("rust:1.47");
|
let mut docker_cmd = DockerCmd::new(docker_image);
|
||||||
docker_cmd.add_volumn(docker_registry, "/usr/local/cargo/registry")
|
docker_cmd.add_volumn(docker_registry, "/usr/local/cargo/registry")
|
||||||
.mirror(MIRROR_USTC);
|
.mirror(MIRROR_USTC);
|
||||||
docker_cmd.exec(&args).unwrap();
|
docker_cmd.exec(&args).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_resolved_docker_registry(image: &str) -> Option<PathBuf> {
|
||||||
|
util_file::get_absolute_path(&get_docker_registry(image))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_docker_registry(image: &str) -> String {
|
||||||
|
let mut registry = "~/.dockerbuild/register/".to_owned();
|
||||||
|
for c in image.chars() {
|
||||||
|
match c {
|
||||||
|
'a'..='z' | 'A'..='Z' | '0'..='9' => registry.push(c),
|
||||||
|
_ => registry.push('_'),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
registry
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_get_docker_registry() {
|
||||||
|
assert_eq!("~/.dockerbuild/register/rust_1_47", get_docker_registry("rust:1.47"));
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user