Skip to content

Can't detect Powershell version on Linux #79

Closed
@8ru73u5

Description

@8ru73u5

I'm using Arch and I have my Powershell executable path under ~\.dotnet\tools\pwsh. When I'm trying to enter this path in the plugin's settings and hit Apply it throws an error: Cannot save settings. Cannot detect PowerShell version. This is what it looks like in the log file:

2021-12-17 20:21:19,198 [ 137649]   WARN - werShellExecutableChooserPanel - Exception when getting PowerShell version:  
java.lang.Throwable: Control-flow exceptions (like PowerShellControlFlowException) should never be logged: ignore for explicitly started processes or rethrow to handle on the outer process level
	at com.intellij.openapi.diagnostic.Logger.ensureNotControlFlow(Logger.java:234)
	at com.intellij.idea.IdeaLogger.warn(IdeaLogger.java:183)
	at com.intellij.plugin.powershell.lang.lsp.ide.settings.PowerShellExecutableChooserPanel$1.lambda$validateSelectedFiles$0(PowerShellExecutableChooserPanel.java:43)
	at org.jetbrains.concurrency.AsyncPromise$onError$1.accept(AsyncPromise.kt:94)
	at org.jetbrains.concurrency.AsyncPromise$onError$1.accept(AsyncPromise.kt:16)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
	at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
	at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
	at org.jetbrains.concurrency.AsyncPromise.setError(AsyncPromise.kt:153)
	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.setError(NonBlockingReadActionImpl.java:285)
	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:540)
	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:486)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1084)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:75)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:158)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:115)
	at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:57)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:188)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:624)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:698)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:646)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:623)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:175)
	at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:57)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:112)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:75)
	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:486)
	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$transferToBgThread$1(NonBlockingReadActionImpl.java:407)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.intellij.plugin.powershell.lang.lsp.languagehost.PowerShellControlFlowException: Execution failed with code 1: [/home/notmyactualusername/.dotnet/tools/pwsh, --version]
	at com.intellij.plugin.powershell.lang.lsp.languagehost.PSLanguageHostUtilsKt.readPowerShellVersion(PSLanguageHostUtils.kt:140)
	at com.intellij.plugin.powershell.lang.lsp.languagehost.PSLanguageHostUtils$getPowerShellVersion$1.call(PSLanguageHostUtils.kt:81)
	at com.intellij.plugin.powershell.lang.lsp.languagehost.PSLanguageHostUtils$getPowerShellVersion$1.call(PSLanguageHostUtils.kt:23)
	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:521)
	... 25 more

I checked out the source code for the part that causes this error and it turned out it would have worked before 03a215e commit which changed the way the plugin reads the Powershell version.

Before commit it was like that: pwsh--version (and it would work on my system except it wouldn't show the Powershell edition).

Now it looks like: pwsh -command -join("Powershell ", \$PSVersionTable.PSVersion, " ", \$PSVersionTable.PSEdition)

And it fails (on my system at least).

Working command: pwsh -command "-join('Powershell ', \$PSVersionTable.PSVersion, ' ', \$PSVersionTable.PSEdition)"

Or: pwsh -command -join\(\'Powershell \', \$PSVersionTable.PSVersion, \' \', \$PSVersionTable.PSEdition\)

Is there any possibility that you could fix this issue? I really really want to use the autocompletion that your plugin provides and I don't think it'll work unless it detects pwsh version properly.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workinggood first issueGood for newcomers

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions