in rider/src/main/kotlin/com/jetbrains/rider/plugins/godot/actions/StartGodotEditorAction.kt [64:105]
fun startEditor(project: Project) {
val runManager = RunManager.getInstance(project)
val configurationType = ConfigurationTypeUtil.findConfigurationType(DotNetExeConfigurationType::class.java)
var runConfiguration = runManager.findConfigurationByTypeAndName(
configurationType.id, GodotRunConfigurationGenerator.EDITOR_CONFIGURATION_NAME)
if (runConfiguration == null){
runConfiguration = runManager.findConfigurationByTypeAndName(
ConfigurationTypeUtil.findConfigurationType(GodotDebugRunConfigurationType::class.java).id,
GodotRunConfigurationGenerator.EDITOR_CONFIGURATION_NAME)
if (runConfiguration == null){
runConfiguration = runManager.findConfigurationByTypeAndName(
ConfigurationTypeUtil.findConfigurationType(ExeConfigurationType::class.java).id,
GodotRunConfigurationGenerator.EDITOR_CONFIGURATION_NAME)
}
}
if (runConfiguration == null)
throw Exception("Godot ${GodotRunConfigurationGenerator.EDITOR_CONFIGURATION_NAME} run configuration was not present.")
val parameters = (runConfiguration.configuration as? RiderConfigurationParametersAware<*>)?.parameters ?: throw Exception("Unexpected run configuration type")
val runCommandLine = createEmptyConsoleCommandLine(parameters.terminalMode, if (SystemInfo.isWindows) ExecutableType.Windows else ExecutableType.Console)
.withEnvironment(parameters.envs)
.withParentEnvironmentType(if (parameters.isPassParentEnvs) {
GeneralCommandLine.ParentEnvironmentType.CONSOLE
} else {
GeneralCommandLine.ParentEnvironmentType.NONE
})
.withExePath(parameters.exePath)
.withWorkDirectory(parameters.workingDirectory)
.withFormatPreservingParameters(parameters.programParameters)
logger.info("Starting $runCommandLine")
// without discarding output, closing GodotEditor on mac would take several minutes
runCommandLine.toProcessBuilder()
.redirectError(ProcessBuilder.Redirect.DISCARD)
.redirectOutput(ProcessBuilder.Redirect.DISCARD)
.start()
}