From b3d6a603d69280071517a5b45c008c195cd60e66 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 22 Nov 2020 01:12:12 +0800 Subject: [PATCH] feat: add logo, tty --- README.md | 5 +++++ dockerbuild.logo.txt | 12 ++++++++++++ src/docker_util.rs | 10 ++++++++++ src/main.rs | 8 ++++++++ 4 files changed, 35 insertions(+) create mode 100644 dockerbuild.logo.txt diff --git a/README.md b/README.md index 349e6b6..4d756f8 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,11 @@ Other commands: $ dockerbuild :rustc --version ``` +Hide logo: +```shell +$ LOGO=off dockerbuild :rustc --version +``` + Docker official images: https://hub.docker.com/_/rust diff --git a/dockerbuild.logo.txt b/dockerbuild.logo.txt new file mode 100644 index 0000000..0c8aab6 --- /dev/null +++ b/dockerbuild.logo.txt @@ -0,0 +1,12 @@ +{color1} ___ ___ {color2} ___ ___ ___ {colore} +{color1} ( ) ( ) {color2} ( ) .-. ( ) ( ){colore} +{color1} .-.| | .--. .--. | | ___ .--. ___ .-. {color2} | |.-. ___ ___ ( __) | | .-.| | {colore} +{color1} / \ | / \ / \ | | ( ) / \ ( ) \ {color2} | / \ ( )( ) (''") | | / \ | {colore} +{color1}| .-. | | .-. ; | .-. ; | | ' / | .-. ; | ' .-. ; {color2} | .-. | | | | | | | | | | .-. | {colore} +{color1}| | | | | | | | | |(___) | |,' / | | | | | / (___){color2} | | | | | | | | | | | | | | | | {colore} +{color1}| | | | | | | | | | | . '. | |/ | | | {color2} | | | | | | | | | | | | | | | | {colore} +{color1}| | | | | | | | | | ___ | | `. \ | ' _.' | | {color2} | | | | | | | | | | | | | | | | {colore} +{color1}| ' | | | ' | | | '( ) | | \ \ | .'.-. | | {color2} | ' | | | | ; ' | | | | | ' | | {colore} +{color1}' `-' / ' `-' / ' `-' | | | \ . ' `-' / | | {color2} ' `-' ; ' `-' / | | | | ' `-' / {colore} +{color1} `.__,' `.__.' `.__,' (___ ) (___) `.__.' (___) {color2} `.__. '.__.' (___) (___) `.__,' {colore} + \ No newline at end of file diff --git a/src/docker_util.rs b/src/docker_util.rs index 193fab8..7a6220b 100644 --- a/src/docker_util.rs +++ b/src/docker_util.rs @@ -19,6 +19,7 @@ pub struct DockerCmd { docker_run_gid: Option, volumns: Vec<(String, String)>, mirror: Option, + tty: bool, } #[allow(dead_code)] @@ -27,6 +28,7 @@ impl DockerCmd { success!("Docker image: {}", docker_name); Self { docker_name: docker_name.into(), + tty: true, ..Default::default() } } @@ -51,6 +53,11 @@ impl DockerCmd { self } + pub fn tty(&mut self, tty: bool) -> &mut Self { + self.tty = tty; + self + } + pub fn add_volumn(&mut self, outer_vol: &str, docker_vol: &str) -> &mut Self { self.volumns.push((outer_vol.into(), docker_vol.into())); self @@ -60,6 +67,9 @@ impl DockerCmd { let mut cmd = Command::new(DOCKER_CMD); cmd.arg("run"); cmd.arg("--rm"); + if self.tty { + cmd.arg("-t"); + } cmd.arg("--user"); cmd.arg(&format!("{}:{}", self.docker_run_uid.unwrap_or_else(|| users::get_current_uid() as u32), diff --git a/src/main.rs b/src/main.rs index bb0b236..c066990 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,6 +12,14 @@ use rust_util::util_file; use docker_util::DockerCmd; fn main() { + let is_display_logo = std::env::var("LOGO").ok().unwrap_or_else(|| "show".into()); + if vec!["on", "yes", "display", "show"].iter().any(|v| **v == is_display_logo) { + println!("{}", include_str!("../dockerbuild.logo.txt") + .replace("{color1}", "\x1B[1m\x1B[91m") + .replace("{colore}", "\x1B[0m") + .replace("{color2}", "\x1B[32m") + ); + } information!("{} v{}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")); let docker_build_config = config::load_docker_build_config_or_default();