in internal/engine/engine.go [148:207]
func (e *Engine) InteractWithScenario(scenario *common.Scenario) error {
return fs.UsingDirectory(e.Configuration.WorkingDirectory, func() error {
az.SetCorrelationId(e.Configuration.CorrelationId, scenario.Environment)
stepsToExecute := filterDeletionCommands(scenario.Steps, e.Configuration.DoNotDelete)
model, err := interactive.NewInteractiveModeModel(
scenario.Name,
e.Configuration.Subscription,
e.Configuration.Environment,
stepsToExecute,
lib.CopyMap(scenario.Environment),
scenario.GetSourceAsString(),
)
if err != nil {
return err
}
common.Program = tea.NewProgram(model, tea.WithAltScreen(), tea.WithMouseCellMotion())
var finalModel tea.Model
var ok bool
finalModel, err = common.Program.Run()
model, ok = finalModel.(interactive.InteractiveModeModel)
if environments.EnvironmentsAzure == e.Configuration.Environment {
if !ok {
return fmt.Errorf("failed to cast tea.Model to InteractiveModeModel")
}
logging.GlobalLogger.Info("Writing session output to stdout")
fmt.Println(strings.Join(model.CommandLines, "\n"))
}
switch e.Configuration.Environment {
case environments.EnvironmentsAzure, environments.EnvironmentsOCD:
logging.GlobalLogger.Info(
"Cleaning environment variable file located at /tmp/env-vars",
)
err := lib.CleanEnvironmentStateFile(lib.DefaultEnvironmentStateFile)
if err != nil {
logging.GlobalLogger.Errorf("Error cleaning environment variables: %s", err.Error())
return err
}
default:
lib.DeleteEnvironmentStateFile(lib.DefaultEnvironmentStateFile)
}
if err != nil {
logging.GlobalLogger.Errorf("Failed to run program %s", err)
return err
}
return nil
})
}