@@ -17,30 +17,45 @@ import (
1717
1818// Initialize the boot2docker VM from scratch.
1919func cmdInit () error {
20+ B2D .Init = false
21+ _ , err := driver .GetMachine (& B2D )
22+ if err == nil {
23+ fmt .Printf ("Virtual machine %s already exists\n " , B2D .VM )
24+ return nil
25+ }
26+
27+ if _ , err := os .Stat (B2D .ISO ); err != nil {
28+ if ! os .IsNotExist (err ) {
29+ return fmt .Errorf ("Failed to open ISO image %q: %s" , B2D .ISO , err )
30+ }
31+
32+ if err := cmdDownload (); err != nil {
33+ return err
34+ }
35+ }
2036
2137 if _ , err := os .Stat (B2D .SSHKey ); err != nil {
2238 if ! os .IsNotExist (err ) {
2339 return fmt .Errorf ("Something wrong with SSH Key file %q: %s" , B2D .SSHKey , err )
2440 }
2541
2642 cmd := exec .Command (B2D .SSHGen , "-t" , "rsa" , "-N" , "" , "-f" , B2D .SSHKey )
43+ cmd .Stdin = os .Stdin
44+ cmd .Stdout = os .Stdout
45+ cmd .Stderr = os .Stderr
2746 if B2D .Verbose {
2847 cmd .Stderr = os .Stderr
29- fmt .Printf ("executing: %v %v" , cmd .Path , strings .Join (cmd .Args , " " ))
48+ fmt .Printf ("executing: %v %v\n " , cmd .Path , strings .Join (cmd .Args , " " ))
3049 }
31- b , err := cmd . Output ()
32- if err != nil {
50+
51+ if err := cmd . Run (); err != nil {
3352 return fmt .Errorf ("Error generating new SSH Key into %s: %s" , B2D .SSHKey , err )
3453 }
35- out := string (b )
36- if B2D .Verbose {
37- fmt .Printf ("%s returned: %s\n END\n " , B2D .SSHKey , out )
38- }
3954 }
4055 //TODO: print a ~/.ssh/config entry for our b2d connection that the user can c&p
4156
4257 B2D .Init = true
43- _ , err : = driver .GetMachine (& B2D )
58+ _ , err = driver .GetMachine (& B2D )
4459 if err != nil {
4560 return fmt .Errorf ("Failed to initialize machine %q: %s" , B2D .VM , err )
4661 }
0 commit comments