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()
}