github.com/rothwerx/packer@v0.9.0/builder/parallels/common/driver_11.go (about) 1 package common 2 3 import ( 4 "fmt" 5 "os/exec" 6 "regexp" 7 ) 8 9 // Parallels11Driver are inherited from Parallels9Driver. 10 // Used for Parallels Desktop 11, requires Pro or Business Edition 11 type Parallels11Driver struct { 12 Parallels9Driver 13 } 14 15 func (d *Parallels11Driver) Verify() error { 16 17 stdout, err := exec.Command(d.PrlsrvctlPath, "info", "--license").Output() 18 if err != nil { 19 return err 20 } 21 22 editionRe := regexp.MustCompile(`edition="(\w+)"`) 23 matches := editionRe.FindStringSubmatch(string(stdout)) 24 if matches == nil { 25 return fmt.Errorf( 26 "Could not determine your Parallels Desktop edition using: %s info --license", d.PrlsrvctlPath) 27 } else { 28 switch matches[1] { 29 case "pro", "business": 30 break 31 default: 32 return fmt.Errorf("Packer can be used only with Parallels Desktop 11 Pro or Business edition. You use: %s edition", matches[1]) 33 } 34 } 35 36 return nil 37 } 38 39 func (d *Parallels11Driver) SetDefaultConfiguration(vmName string) error { 40 commands := make([][]string, 12) 41 commands[0] = []string{"set", vmName, "--cpus", "1"} 42 commands[1] = []string{"set", vmName, "--memsize", "512"} 43 commands[2] = []string{"set", vmName, "--startup-view", "headless"} 44 commands[3] = []string{"set", vmName, "--on-shutdown", "close"} 45 commands[4] = []string{"set", vmName, "--on-window-close", "keep-running"} 46 commands[5] = []string{"set", vmName, "--auto-share-camera", "off"} 47 commands[6] = []string{"set", vmName, "--smart-guard", "off"} 48 commands[7] = []string{"set", vmName, "--shared-cloud", "off"} 49 commands[8] = []string{"set", vmName, "--shared-profile", "off"} 50 commands[9] = []string{"set", vmName, "--smart-mount", "off"} 51 commands[10] = []string{"set", vmName, "--sh-app-guest-to-host", "off"} 52 commands[11] = []string{"set", vmName, "--sh-app-host-to-guest", "off"} 53 54 for _, command := range commands { 55 err := d.Prlctl(command...) 56 if err != nil { 57 return err 58 } 59 } 60 return nil 61 }