func()

in executors/parallels/parallels.go [191:243]


func (s *executor) Prepare(options common.ExecutorPrepareOptions) error {
	err := s.AbstractExecutor.Prepare(options)
	if err != nil {
		return err
	}

	err = s.validateConfig()
	if err != nil {
		return err
	}

	err = s.printVersion()
	if err != nil {
		return err
	}

	var baseName string
	baseName, err = s.Executor.GetBaseName(s.Config.Parallels.BaseName)
	if err != nil {
		return err
	}

	unregisterInvalidVM(s.vmName)

	s.vmName = s.getVMName(baseName)
	s.tryDeleteVM()

	s.tryRestoreFromSnapshot()

	if !prl.Exist(s.vmName) {
		s.BuildLogger.Println("Creating new VM...")
		err = s.createVM(baseName)
		if err != nil {
			return err
		}

		canCreateSnapshot := !s.Config.Parallels.DisableSnapshots && !s.isAppleSilicon()
		if canCreateSnapshot {
			s.BuildLogger.Println("Creating default snapshot...")
			err = prl.CreateSnapshot(s.vmName, "Started")
			if err != nil {
				return err
			}
		}
	}

	err = s.ensureVMStarted()
	if err != nil {
		return err
	}

	return s.sshConnect()
}