cli: Simplify run_hyperkit.go

Separating command line option parsing from executing hyperkit
makes the code awkward with many parameters passed between functions.

Having everything in one function makes the code simpler.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
This commit is contained in:
Rolf Neugebauer 2017-04-02 12:42:47 +01:00
parent 681076f1a3
commit 2c91f6273f

View File

@ -20,11 +20,11 @@ func runHyperKit(args []string) {
fmt.Printf("Options:\n") fmt.Printf("Options:\n")
hyperkitCmd.PrintDefaults() hyperkitCmd.PrintDefaults()
} }
runHyperKit := hyperkitCmd.String("hyperkit", "", "Path to hyperkit binary (if not in default location)") hyperkitPath := hyperkitCmd.String("hyperkit", "", "Path to hyperkit binary (if not in default location)")
runCPUs := hyperkitCmd.Int("cpus", 1, "Number of CPUs") cpus := hyperkitCmd.Int("cpus", 1, "Number of CPUs")
runMem := hyperkitCmd.Int("mem", 1024, "Amount of memory in MB") mem := hyperkitCmd.Int("mem", 1024, "Amount of memory in MB")
runDiskSz := hyperkitCmd.Int("disk-size", 0, "Size of Disk in MB") diskSz := hyperkitCmd.Int("disk-size", 0, "Size of Disk in MB")
runDisk := hyperkitCmd.String("disk", "", "Path to disk image to used") disk := hyperkitCmd.String("disk", "", "Path to disk image to used")
hyperkitCmd.Parse(args) hyperkitCmd.Parse(args)
remArgs := hyperkitCmd.Args() remArgs := hyperkitCmd.Args()
@ -35,29 +35,26 @@ func runHyperKit(args []string) {
} }
prefix := remArgs[0] prefix := remArgs[0]
runHyperKitInternal(*runHyperKit, *runCPUs, *runMem, *runDiskSz, *runDisk, prefix) // Run
}
func runHyperKitInternal(hyperkitPath string, cpus, mem, diskSz int, disk, prefix string) {
cmdline, err := ioutil.ReadFile(prefix + "-cmdline") cmdline, err := ioutil.ReadFile(prefix + "-cmdline")
if err != nil { if err != nil {
log.Fatalf("Cannot open cmdline file: %v", err) log.Fatalf("Cannot open cmdline file: %v", err)
} }
if diskSz != 0 && disk == "" { if *diskSz != 0 && *disk == "" {
disk = prefix + "-disk.img" *disk = prefix + "-disk.img"
} }
h, err := hyperkit.New(hyperkitPath, "", "auto", disk) h, err := hyperkit.New(*hyperkitPath, "", "auto", *disk)
if err != nil { if err != nil {
log.Fatalln("Error creating hyperkit: ", err) log.Fatalln("Error creating hyperkit: ", err)
} }
h.Kernel = prefix + "-bzImage" h.Kernel = prefix + "-bzImage"
h.Initrd = prefix + "-initrd.img" h.Initrd = prefix + "-initrd.img"
h.CPUs = cpus h.CPUs = *cpus
h.Memory = mem h.Memory = *mem
h.DiskSize = diskSz h.DiskSize = *diskSz
err = h.Run(string(cmdline)) err = h.Run(string(cmdline))
if err != nil { if err != nil {