@@ -5,6 +5,8 @@ use std::io::{stdin, BufRead, BufReader, IsTerminal, Read, Write};
5
5
use std:: path:: Path ;
6
6
use std:: process:: { Command , Stdio } ;
7
7
use std:: thread;
8
+ use rand:: { thread_rng, Rng } ;
9
+ use rand:: distributions:: Alphanumeric ;
8
10
9
11
pub fn pull ( package : & Package ) -> bool {
10
12
let image = format ! ( "{}:{}" , package. index. image, package. versions. current) ;
@@ -21,7 +23,7 @@ pub fn run(package: &Package, binary: Option<String>, params: &Vec<String>) -> b
21
23
. expect ( "Failed to read stdin" ) ;
22
24
}
23
25
24
- let mut args = vec ! [ "run" . to_string( ) , "--rm" . to_string( ) ] ;
26
+ let mut args = vec ! [ "run" . to_string( ) , "--rm" . to_string( ) , "--name" . to_string ( ) , generate_random_name ( & package ) ] ;
25
27
if interactive {
26
28
args. push ( "-i" . to_string ( ) ) ;
27
29
} else {
@@ -43,6 +45,11 @@ pub fn run(package: &Package, binary: Option<String>, params: &Vec<String>) -> b
43
45
run_command_with_args ( "docker" , & args, Some ( buffer) )
44
46
}
45
47
48
+ fn generate_random_name ( package : & Package ) -> String {
49
+ let id: String = thread_rng ( ) . sample_iter ( & Alphanumeric ) . take ( 10 ) . map ( char:: from) . collect ( ) ;
50
+ format ! ( "hbox-{}-{}-{}" , package. name, package. versions. current, id)
51
+ }
52
+
46
53
fn add_volumes ( package : & Package , args : & mut Vec < String > ) {
47
54
if let Some ( volumes) = & package. index . volumes {
48
55
for volume in volumes {
0 commit comments