Skip to content

Commit c44c5f5

Browse files
committed
Switch parent env type to console
1 parent b66428d commit c44c5f5

File tree

5 files changed

+38
-17
lines changed

5 files changed

+38
-17
lines changed

src/main/kotlin/io/vlang/debugger/runconfig/VlangDebugRunner.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package io.vlang.debugger.runconfig
22

33
import com.intellij.execution.configurations.*
4+
import com.intellij.execution.configurations.GeneralCommandLine.ParentEnvironmentType.*
45
import com.intellij.execution.executors.DefaultDebugExecutor
56
import com.intellij.execution.runners.AsyncProgramRunner
67
import com.intellij.execution.runners.ExecutionEnvironment
78
import com.intellij.execution.ui.RunContentDescriptor
8-
import com.intellij.util.EnvironmentUtil
99
import com.intellij.util.execution.ParametersListUtil
1010
import io.vlang.ide.run.VlangBuildTaskRunner
1111
import io.vlang.ide.run.VlangRunConfigurationRunState
@@ -37,17 +37,13 @@ open class VlangDebugRunner : AsyncProgramRunner<RunnerSettings>() {
3737
val workingDir = options.workingDir
3838
val outputFileName = options.outputFileName
3939

40-
val env = EnvironmentUtil.parseEnv(options.envs.split("\n", ",").toTypedArray()).apply {
41-
EnvironmentUtil.inlineParentOccurrences(this)
42-
}
43-
4440
val binName = if (!outputFileName.isEmpty()) {
4541
outputFileName
4642
} else {
4743
VlangBuildTaskRunner.binaryName(options)
4844
}
4945

50-
val exe = if (File(binName).isAbsolute) {
46+
val exe = if (File(binName).isRooted) {
5147
File(binName)
5248
} else {
5349
File(workingDir, binName)
@@ -69,8 +65,8 @@ open class VlangDebugRunner : AsyncProgramRunner<RunnerSettings>() {
6965
.withWorkDirectory(workingDir)
7066
.withCharset(Charsets.UTF_8)
7167
.withRedirectErrorStream(true)
72-
.withParentEnvironmentType(GeneralCommandLine.ParentEnvironmentType.SYSTEM)
73-
.withEnvironment(env)
68+
.withParentEnvironmentType(if (options.isPassParentEnvs) CONSOLE else NONE)
69+
.withEnvironment(options.envsMap)
7470

7571
val additionalArguments = ParametersListUtil.parse(options.programArguments)
7672
commandLine.addParameters(additionalArguments)

src/main/kotlin/io/vlang/ide/run/VlangBuildTaskRunner.kt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ package io.vlang.ide.run
22

33
import com.intellij.build.BuildViewManager
44
import com.intellij.execution.configurations.GeneralCommandLine
5+
import com.intellij.execution.configurations.GeneralCommandLine.ParentEnvironmentType.*
56
import com.intellij.execution.process.ProcessAdapter
67
import com.intellij.execution.process.ProcessEvent
78
import com.intellij.openapi.application.invokeLater
89
import com.intellij.openapi.components.service
910
import com.intellij.openapi.project.Project
1011
import com.intellij.openapi.util.SystemInfo
1112
import com.intellij.task.*
12-
import com.intellij.util.EnvironmentUtil
1313
import com.intellij.util.execution.ParametersListUtil
1414
import io.vlang.configurations.VlangConfigurationUtil
1515
import io.vlang.configurations.VlangProjectSettingsConfigurable
@@ -66,10 +66,6 @@ class VlangBuildTaskRunner : ProjectTaskRunner() {
6666
val outputFileName = options.outputFileName
6767
val outputDir = File(outputFileName).parentFile
6868

69-
val env = EnvironmentUtil.getEnvironmentMap() + EnvironmentUtil.parseEnv(options.envs.split("\n", ",").toTypedArray()).apply {
70-
EnvironmentUtil.inlineParentOccurrences(this)
71-
}
72-
7369
if (outputDir != null && !outputDir.exists()) {
7470
outputDir.mkdirs()
7571
}
@@ -98,7 +94,8 @@ class VlangBuildTaskRunner : ProjectTaskRunner() {
9894

9995
val commandLine = GeneralCommandLine()
10096
.withExePath(exe.path)
101-
.withEnvironment(env)
97+
.withParentEnvironmentType(if (options.isPassParentEnvs) CONSOLE else NONE)
98+
.withEnvironment(options.envsMap)
10299
.withParameters(pathToBuild)
103100
.withParameters("-color")
104101
.withWorkDirectory(workingDir)
@@ -155,7 +152,13 @@ class VlangBuildTaskRunner : ProjectTaskRunner() {
155152
companion object {
156153
fun binaryName(options: VlangRunConfigurationOptions.ExpandedOptions): String {
157154
val name = if (options.runKind == VlangRunConfigurationEditor.RunKind.File) {
158-
File(options.fileName).nameWithoutExtension
155+
val file = File(options.fileName)
156+
val execFile = File(file.parentFile, file.nameWithoutExtension).normalize().toString()
157+
if (file.isRooted) {
158+
execFile
159+
} else {
160+
File(options.workingDir, execFile).normalize().toString()
161+
}
159162
} else {
160163
File(options.workingDir).resolve(File(options.directory)).normalize().name
161164
}

src/main/kotlin/io/vlang/ide/run/VlangRunConfigurationEditor.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ open class VlangRunConfigurationEditor(private val project: Project) : SettingsE
4343
var runAfterBuild: Boolean = true,
4444
var workingDir: String = "",
4545
var envs: String = "",
46+
var isPassParentEnvs: Boolean = true,
4647
var buildArguments: String = "",
4748
var programArguments: String = "",
4849
var production: Boolean = false,
@@ -63,6 +64,7 @@ open class VlangRunConfigurationEditor(private val project: Project) : SettingsE
6364
runAfterBuild = demoRunConfiguration.options.runAfterBuild
6465
workingDir = demoRunConfiguration.options.workingDir
6566
envs = demoRunConfiguration.options.envs
67+
isPassParentEnvs = demoRunConfiguration.options.isPassParentEnvs
6668
buildArguments = demoRunConfiguration.options.buildArguments
6769
programArguments = demoRunConfiguration.options.programArguments
6870
production = demoRunConfiguration.options.production
@@ -83,6 +85,7 @@ open class VlangRunConfigurationEditor(private val project: Project) : SettingsE
8385
runAfterBuild = model.runAfterBuild
8486
workingDir = model.workingDir
8587
envs = model.envs
88+
isPassParentEnvs = model.isPassParentEnvs
8689
buildArguments = model.buildArguments
8790
programArguments = model.programArguments
8891
production = model.production
@@ -201,9 +204,11 @@ open class VlangRunConfigurationEditor(private val project: Project) : SettingsE
201204
.apply {
202205
MacrosDialog.addTextFieldExtension(
203206
component.textField,
204-
MacrosDialog.Filters.DIRECTORY_PATH,
207+
MacrosDialog.Filters.ALL,
205208
null
206209
)
210+
component.isPassParentEnvs = model.isPassParentEnvs
211+
component.addChangeListener { model.isPassParentEnvs = component.isPassParentEnvs }
207212
}
208213
.align(AlignX.FILL)
209214
.bindText(model::envs)

src/main/kotlin/io/vlang/ide/run/VlangRunConfigurationOptions.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package io.vlang.ide.run
33
import com.intellij.execution.configurations.LocatableRunConfigurationOptions
44
import com.intellij.openapi.components.PathMacroManager
55
import com.intellij.openapi.project.Project
6+
import com.intellij.util.EnvironmentUtil
67
import io.vlang.ide.run.VlangRunConfigurationEditor.RunKind
78

89
class VlangRunConfigurationOptions : LocatableRunConfigurationOptions() {
@@ -14,6 +15,7 @@ class VlangRunConfigurationOptions : LocatableRunConfigurationOptions() {
1415
private var _runAfterBuild = property(true).provideDelegate(this, "runAfterBuild")
1516
private var _workingDir = string("\$PROJECT_DIR$").provideDelegate(this, "workingDir")
1617
private var _envs = string("").provideDelegate(this, "envs")
18+
private var _isPassParentEnvs = property(true).provideDelegate(this, "isPassParentEnvs")
1719
private var _buildArguments = string("").provideDelegate(this, "buildArguments")
1820
private var _programArguments = string("").provideDelegate(this, "programArguments")
1921
private var _production = property(false).provideDelegate(this, "production")
@@ -85,6 +87,12 @@ class VlangRunConfigurationOptions : LocatableRunConfigurationOptions() {
8587
_emulateTerminal.setValue(this, value)
8688
}
8789

90+
var isPassParentEnvs: Boolean
91+
get() = _isPassParentEnvs.getValue(this)
92+
set(value) {
93+
_isPassParentEnvs.setValue(this, value)
94+
}
95+
8896
fun expandOptions(project: Project): ExpandedOptions {
8997
return ExpandedOptions(this, project)
9098
}
@@ -124,6 +132,9 @@ class VlangRunConfigurationOptions : LocatableRunConfigurationOptions() {
124132
return macroManager.expandPath(options.envs)
125133
}
126134

135+
val envsMap: Map<String, String>
136+
get() = EnvironmentUtil.parseEnv(envs.split("\n", ";").toTypedArray())
137+
127138
val buildArguments: String
128139
get() {
129140
return macroManager.expandPath(options.buildArguments)
@@ -139,5 +150,8 @@ class VlangRunConfigurationOptions : LocatableRunConfigurationOptions() {
139150

140151
val emulateTerminal: Boolean
141152
get() = options.emulateTerminal
153+
154+
val isPassParentEnvs: Boolean
155+
get() = options.isPassParentEnvs
142156
}
143157
}

src/main/kotlin/io/vlang/ide/run/VlangRunConfigurationRunState.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.intellij.execution.ExecutionResult
44
import com.intellij.execution.Executor
55
import com.intellij.execution.configurations.CommandLineState
66
import com.intellij.execution.configurations.GeneralCommandLine
7+
import com.intellij.execution.configurations.GeneralCommandLine.ParentEnvironmentType.*
78
import com.intellij.execution.configurations.PtyCommandLine
89
import com.intellij.execution.configurations.RunProfileState
910
import com.intellij.execution.process.ProcessEvent
@@ -47,7 +48,7 @@ class VlangRunConfigurationRunState(
4748
}
4849
} else {
4950
val binName = VlangBuildTaskRunner.binaryName(options)
50-
File(workingDir, binName).normalize()
51+
File(binName)
5152
}
5253
if (!exe.exists()) {
5354
throw IllegalStateException("Can't run ${exe.absolutePath}, file not found")
@@ -64,6 +65,8 @@ class VlangRunConfigurationRunState(
6465
val commandLine = cmd
6566
.withExePath(exe.absolutePath)
6667
.withWorkDirectory(workingDir)
68+
.withParentEnvironmentType(if (options.isPassParentEnvs) CONSOLE else NONE)
69+
.withEnvironment(options.envsMap)
6770
.withCharset(Charsets.UTF_8)
6871
.withRedirectErrorStream(true)
6972

0 commit comments

Comments
 (0)