Skip to content

Commit

Permalink
Merge branch 'main' into eap
Browse files Browse the repository at this point in the history
  • Loading branch information
code-asher committed Dec 19, 2023
2 parents 581e8a2 + 8805868 commit bec48d1
Show file tree
Hide file tree
Showing 22 changed files with 64 additions and 59 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@

## Unreleased

### Fixed

- Listing IDEs when using the plugin from the File > Remote Development option
within a local IDE should now work.
- Recent connections are now preserved.

## 2.9.1 - 2023-11-06

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ plugins {
// Groovy support
id("groovy")
// Kotlin support
id("org.jetbrains.kotlin.jvm") version "1.9.10"
id("org.jetbrains.kotlin.jvm") version "1.9.20"
// Gradle IntelliJ Plugin
id("org.jetbrains.intellij") version "1.13.3"
// Gradle Changelog Plugin
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
pluginGroup=com.coder.gateway
pluginName=coder-gateway
# SemVer format -> https://semver.org
pluginVersion=2.9.1-eap.0
pluginVersion=2.9.2-eap.0
# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
# for insight into build numbers and IntelliJ Platform versions.
pluginSinceBuild=233.6745
Expand Down
16 changes: 6 additions & 10 deletions src/main/kotlin/com/coder/gateway/CoderRemoteConnectionHandle.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ import com.jetbrains.gateway.ssh.SshDeployFlowUtil
import com.jetbrains.gateway.ssh.SshMultistagePanelContext
import com.jetbrains.gateway.ssh.deploy.DeployException
import com.jetbrains.rd.util.lifetime.LifetimeDefinition
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import net.schmizz.sshj.common.SSHException
import net.schmizz.sshj.connection.ConnectionException
import java.awt.Dimension
Expand All @@ -48,7 +46,7 @@ import javax.net.ssl.SSLHandshakeException
class CoderRemoteConnectionHandle {
private val recentConnectionsService = service<CoderRecentWorkspaceConnectionsService>()

suspend fun connect(getParameters: (indicator: ProgressIndicator) -> Map<String, String>) {
fun connect(getParameters: (indicator: ProgressIndicator) -> Map<String, String>) {
val clientLifetime = LifetimeDefinition()
clientLifetime.launchUnderBackgroundProgress(CoderGatewayBundle.message("gateway.connector.coder.connection.provider.title")) {
try {
Expand Down Expand Up @@ -79,13 +77,11 @@ class CoderRemoteConnectionHandle {
indicator.text = CoderGatewayBundle.message("gateway.connector.coder.connecting.failed.retry", humanizeDuration(remainingMs))
},
)
GlobalScope.launch {
logger.info("Deploying and starting IDE with $context")
// At this point JetBrains takes over with their own UI.
@Suppress("UnstableApiUsage") SshDeployFlowUtil.fullDeployCycle(
clientLifetime, context, Duration.ofMinutes(10)
)
}
logger.info("Deploying and starting IDE with $context")
// At this point JetBrains takes over with their own UI.
@Suppress("UnstableApiUsage") SshDeployFlowUtil.fullDeployCycle(
clientLifetime, context, Duration.ofMinutes(10)
)
recentConnectionsService.addRecentConnection(parameters.toRecentWorkspaceConnection())
} catch (e: Exception) {
if (isCancellation(e)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,51 @@ import com.intellij.openapi.components.BaseState
import com.intellij.util.xmlb.annotations.Attribute

class RecentWorkspaceConnection(
coderWorkspaceHostname: String? = null,
projectPath: String? = null,
lastOpened: String? = null,
ideProductCode: String? = null,
ideBuildNumber: String? = null,
downloadSource: String? = null,
idePathOnHost: String? = null,
webTerminalLink: String? = null,
configDirectory: String? = null,
name: String? = null,
) : BaseState(), Comparable<RecentWorkspaceConnection> {
@get:Attribute
var coderWorkspaceHostname: String? = null,
var coderWorkspaceHostname by string()
@get:Attribute
var projectPath: String? = null,
var projectPath by string()
@get:Attribute
var lastOpened: String? = null,
var lastOpened by string()
@get:Attribute
var ideProductCode: String? = null,
var ideProductCode by string()
@get:Attribute
var ideBuildNumber: String? = null,
var ideBuildNumber by string()
@get:Attribute
var downloadSource: String? = null,
var downloadSource by string()
@get:Attribute
var idePathOnHost: String? = null,
var idePathOnHost by string()
@get:Attribute
var webTerminalLink: String? = null,
var webTerminalLink by string()
@get:Attribute
var configDirectory: String? = null,
var configDirectory by string()
@get:Attribute
var name: String? = null,
) : BaseState(), Comparable<RecentWorkspaceConnection> {
var name by string()

init {
this.coderWorkspaceHostname = coderWorkspaceHostname
this.projectPath = projectPath
this.lastOpened = lastOpened
this.ideProductCode = ideProductCode
this.ideBuildNumber = ideBuildNumber
this.downloadSource = downloadSource
this.idePathOnHost = idePathOnHost
this.webTerminalLink = webTerminalLink
this.configDirectory = configDirectory
this.name = name
}

override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
Expand Down
1 change: 0 additions & 1 deletion src/main/kotlin/com/coder/gateway/sdk/CoderCLIManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,6 @@ class CoderCLIManager @JvmOverloads constructor(
transform = {
"""
Host ${getHostName(deploymentURL, it)}
HostName coder.${it.name}
ProxyCommand ${proxyArgs.joinToString(" ")} ${it.name}
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,10 +212,8 @@ class CoderGatewayRecentWorkspaceConnectionsView(private val setContentCallback:
row {
icon(product.icon)
cell(ActionLink(connectionDetails.projectPath!!) {
cs.launch {
CoderRemoteConnectionHandle().connect{ connectionDetails.toWorkspaceParams() }
GatewayUI.getInstance().reset()
}
CoderRemoteConnectionHandle().connect{ connectionDetails.toWorkspaceParams() }
GatewayUI.getInstance().reset()
})
label("").resizableColumn().align(AlignX.FILL)
label("Last opened: ${connectionDetails.lastOpened}").applyToComponent {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ import com.coder.gateway.withWorkspaceHostname
import com.intellij.ide.IdeBundle
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.ModalityState
import com.intellij.openapi.application.asContextElement
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.ui.ComboBox
import com.intellij.openapi.ui.ComponentValidator
Expand Down Expand Up @@ -65,7 +67,6 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.async
import kotlinx.coroutines.cancel
import kotlinx.coroutines.cancelAndJoin
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
Expand Down Expand Up @@ -181,7 +182,7 @@ class CoderLocateRemoteProjectStepView(private val setNextButtonEnabled: (Boolea
titleLabel.text = CoderGatewayBundle.message("gateway.connector.view.coder.remoteproject.choose.text", selectedWorkspace.name)
terminalLink.url = clientService.client.url.withPath("/@${clientService.me.username}/${selectedWorkspace.name}/terminal").toString()

ideResolvingJob = cs.launch {
ideResolvingJob = cs.launch(ModalityState.current().asContextElement()) {
try {
val ides = suspendingRetryWithExponentialBackOff(
action = { attempt ->
Expand Down Expand Up @@ -338,27 +339,23 @@ class CoderLocateRemoteProjectStepView(private val setNextButtonEnabled: (Boolea
logger.warn("No workspace was selected. Please go back to the previous step and select a workspace")
return false
}
cs.launch {
CoderRemoteConnectionHandle().connect{
selectedIDE
.toWorkspaceParams()
.withWorkspaceHostname(CoderCLIManager.getHostName(deploymentURL, selectedWorkspace))
.withProjectPath(tfProject.text)
.withWebTerminalLink("${terminalLink.url}")
.withConfigDirectory(wizardModel.configDirectory)
.withName(selectedWorkspace.name)
}
GatewayUI.getInstance().reset()
CoderRemoteConnectionHandle().connect{
selectedIDE
.toWorkspaceParams()
.withWorkspaceHostname(CoderCLIManager.getHostName(deploymentURL, selectedWorkspace))
.withProjectPath(tfProject.text)
.withWebTerminalLink("${terminalLink.url}")
.withConfigDirectory(wizardModel.configDirectory)
.withName(selectedWorkspace.name)
}
GatewayUI.getInstance().reset()
return true
}

override fun onPrevious() {
super.onPrevious()
logger.info("Going back to Workspace view")
cs.launch {
ideResolvingJob.cancelAndJoin()
}
ideResolvingJob?.cancel()
}

override fun dispose() {
Expand Down
1 change: 0 additions & 1 deletion src/test/fixtures/outputs/append-blank-newlines.conf
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--foo-bar--test.coder.invalid
HostName coder.foo-bar
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
1 change: 0 additions & 1 deletion src/test/fixtures/outputs/append-blank.conf
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--foo-bar--test.coder.invalid
HostName coder.foo-bar
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
1 change: 0 additions & 1 deletion src/test/fixtures/outputs/append-no-blocks.conf
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ Host test2

# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--foo-bar--test.coder.invalid
HostName coder.foo-bar
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
1 change: 0 additions & 1 deletion src/test/fixtures/outputs/append-no-newline.conf
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ Host test2
Port 443
# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--foo-bar--test.coder.invalid
HostName coder.foo-bar
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
1 change: 0 additions & 1 deletion src/test/fixtures/outputs/append-no-related-blocks.conf
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ some jetbrains config

# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--foo-bar--test.coder.invalid
HostName coder.foo-bar
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
1 change: 0 additions & 1 deletion src/test/fixtures/outputs/header-command-windows.conf
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--header--test.coder.invalid
HostName coder.header
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config --header-command "C:\Program Files\My Header Command\\"also has quotes\"\HeaderCommand.exe" ssh --stdio header
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
1 change: 0 additions & 1 deletion src/test/fixtures/outputs/header-command.conf
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--header--test.coder.invalid
HostName coder.header
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config --header-command "my-header-command \"test\"" ssh --stdio header
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
2 changes: 0 additions & 2 deletions src/test/fixtures/outputs/multiple-workspaces.conf
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--foo--test.coder.invalid
HostName coder.foo
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo
ConnectTimeout 0
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
LogLevel ERROR
SetEnv CODER_SSH_SESSION_TYPE=JetBrains
Host coder-jetbrains--bar--test.coder.invalid
HostName coder.bar
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio bar
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
1 change: 0 additions & 1 deletion src/test/fixtures/outputs/replace-end-no-newline.conf
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ Host test
Host test2
Port 443 # --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--foo-bar--test.coder.invalid
HostName coder.foo-bar
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
1 change: 0 additions & 1 deletion src/test/fixtures/outputs/replace-end.conf
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ Host test2
Port 443
# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--foo-bar--test.coder.invalid
HostName coder.foo-bar
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ some coder config
# ------------END-CODER------------
# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--foo-bar--test.coder.invalid
HostName coder.foo-bar
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
1 change: 0 additions & 1 deletion src/test/fixtures/outputs/replace-middle.conf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ Host test
Port 80
# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--foo-bar--test.coder.invalid
HostName coder.foo-bar
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
1 change: 0 additions & 1 deletion src/test/fixtures/outputs/replace-only.conf
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--foo-bar--test.coder.invalid
HostName coder.foo-bar
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down
1 change: 0 additions & 1 deletion src/test/fixtures/outputs/replace-start.conf
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# --- START CODER JETBRAINS test.coder.invalid
Host coder-jetbrains--foo-bar--test.coder.invalid
HostName coder.foo-bar
ProxyCommand /tmp/coder-gateway/test.coder.invalid/coder-linux-amd64 --global-config /tmp/coder-gateway/test.coder.invalid/config ssh --stdio foo-bar
ConnectTimeout 0
StrictHostKeyChecking no
Expand Down

0 comments on commit bec48d1

Please sign in to comment.