use std::fs; use std::path::PathBuf; use serde::{Serialize, Deserialize}; use rust_util::util_file; #[derive(Serialize, Deserialize)] pub struct DockerBuildConfig { pub image: Option, pub mirror: Option, } pub fn load_docker_build_config_or_default() -> DockerBuildConfig { load_docker_build_config().unwrap_or_else(|| { DockerBuildConfig { image: Some("rust".into()), mirror: None, } }) } pub fn load_docker_build_config() -> Option { let config = find_docker_build_config_file()?; success!("Find config file: {:?}", config); let config_content = fs::read_to_string(&config).map_err(|e| { failure!("Read config file: {:?}, failed: {}", config, e); e }).ok()?; serde_json::from_str(&config_content).map_err(|e| { failure!("Parse config file: {:?}, failed: {}", config, e); e }).ok() } fn find_docker_build_config_file() -> Option { util_file::read_config(None, &vec![ // "dockerbuild.json".into(), "~/.dockerbuild.json".into(), "/etc/dockerbuild.json".into(), ]) }