func (c *DaemonCommand) Execute(args []string) error { utils.EnsureSudo() config, err := utils.ReadConfig() if err != nil { return err } err = utils.AddExport(config.Uuid, config.Share) if err != nil { return err } utils.StartVM(config) ip, err := utils.GetIP(config.Uuid) if err != nil { return err } err = utils.AddHost(config.Hostname, ip) if err != nil { return err } return utils.Proxy(ip) }
func (c *UninstallCommand) Execute(args []string) error { utils.EnsureSudo() steps := utils.Steps{ { "Removing launchd agent", func() error { utils.StopAgent() utils.RemoveHost() return utils.RemoveAgent() }, }, { "Removing files", func() error { err := utils.RemoveSudoer() if err != nil { return err } return utils.RemoveDir() }, }, } return utils.Spin(steps) }
func (c *InstallCommand) Execute(args []string) error { utils.EnsureSudo() err := utils.CreateDir() if err != nil { return err } steps := utils.Steps{ { "Building disk image", func() error { // clean up but ignore errors since it's possible things weren't installed utils.StopAgent() utils.RemoveAgent() utils.RemoveHost() utils.RemoveDir() err := utils.CreateDir() if err != nil { return err } return utils.CreateDisk(c.SSHKey, c.Disk) }, }, { "Downloading OS", func() error { if c.Version == "" { latest, err := utils.GetLatestOSVersion() if err != nil { return err } c.Version = latest } return utils.DownloadOS(c.Version) }, }, { "Writing configuration", func() error { uuid := uuid.NewV1().String() return utils.SaveConfig(utils.Config{ Uuid: uuid, CpuCount: c.Cpus, Memory: c.Memory, Hostname: c.Hostname, DiskSize: c.Disk, Share: c.Share, }) }, }, { "Creating launchd agent", func() error { err := utils.AddSudoer() if err != nil { return err } return utils.CreateAgent() }, }, } return utils.Spin(steps) }