Skip to content

Commit f9c0969

Browse files
authored
[JetBrains] support RustRover editor (#19839)
* [JetBrains] support RustRover * Add startup json * fixup generate * Add svg icon
1 parent 18309b6 commit f9c0969

File tree

21 files changed

+308
-20
lines changed

21 files changed

+308
-20
lines changed

.github/workflows/jetbrains-auto-update.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,9 @@ jobs:
5959
productId: clion
6060
productCode: CL
6161
secrets: inherit
62+
rustrover:
63+
uses: ./.github/workflows/jetbrains-auto-update-template.yml
64+
with:
65+
productId: rustrover
66+
productCode: RR
67+
secrets: inherit

WORKSPACE.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ defaultArgs:
2121
webstormDownloadUrl: "https://download.jetbrains.com/webstorm/WebStorm-2024.1.3.tar.gz"
2222
riderDownloadUrl: "https://download.jetbrains.com/rider/JetBrains.Rider-2024.1.2.tar.gz"
2323
clionDownloadUrl: "https://download.jetbrains.com/cpp/CLion-2024.1.2.tar.gz"
24+
rustroverDownloadUrl: "https://download.jetbrains.com/rustrover/RustRover-2024.1.tar.gz"
2425
jbBackendVersion: "latest"
2526
dockerVersion: "20.10.24"
2627
dockerComposeVersion: "2.27.0-gitpod.0"

components/BUILD.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ packages:
5959
- components/ide/jetbrains/image:rider-latest
6060
- components/ide/jetbrains/image:clion
6161
- components/ide/jetbrains/image:clion-latest
62+
- components/ide/jetbrains/image:rustrover
63+
- components/ide/jetbrains/image:rustrover-latest
6264
- components/image-builder-bob:docker
6365
- components/image-builder-mk3:docker
6466
- components/ipfs/ipfs-cluster:docker

components/gitpod-protocol/data/gitpod-schema.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,10 @@
297297
"clion": {
298298
"$ref": "#/definitions/jetbrainsProduct",
299299
"description": "Configure CLion integration"
300+
},
301+
"rustrover": {
302+
"$ref": "#/definitions/jetbrainsProduct",
303+
"description": "Configure RustRover integration"
300304
}
301305
}
302306
},

components/gitpod-protocol/go/gitpod-config-types.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/gitpod-protocol/src/protocol.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,7 @@ export interface JetBrainsConfig {
795795
webstorm?: JetBrainsProductConfig;
796796
rider?: JetBrainsProductConfig;
797797
clion?: JetBrainsProductConfig;
798+
rustrover?: JetBrainsProductConfig;
798799
}
799800
export interface JetBrainsProductConfig {
800801
prebuilds?: JetBrainsPrebuilds;
Lines changed: 132 additions & 0 deletions
Loading

components/ide/gha-update-image/lib/common.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const workspaceYamlSchema = z.object({
2727
webstormDownloadUrl: z.string(),
2828
riderDownloadUrl: z.string(),
2929
clionDownloadUrl: z.string(),
30+
rustroverDownloadUrl: z.string(),
3031
}),
3132
});
3233
export type IWorkspaceYaml = z.infer<typeof workspaceYamlSchema>;
@@ -143,6 +144,8 @@ export const getLatestInstallerVersions = async (version?: string) => {
143144
riderLatest: versionObj,
144145
rubymine: versionObj,
145146
rubymineLatest: versionObj,
147+
rustrover: versionObj,
148+
rustroverLatest: versionObj,
146149
webstorm: versionObj,
147150
webstormLatest: versionObj,
148151
}),

components/ide/gha-update-image/lib/jb-stable-version.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,13 @@ export const ides: JetBrainsIDE[] = [
9898
productType: "release",
9999
exampleRepo: "https://github.com/gitpod-samples/template-cpp",
100100
},
101+
{
102+
productName: "RustRover",
103+
productId: "rustrover",
104+
productCode: "RR",
105+
productType: "release",
106+
exampleRepo: "https://github.com/gitpod-samples/template-rust-cli",
107+
},
101108
] as const;
102109

103110
const workspaceYamlInfo = await readWorkspaceYaml();

components/ide/jetbrains/backend-plugin/hot-deploy.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ leeway build -DnoVerifyJBPlugin=true -Dversion="$version" -DimageRepoBase=eu.gcr
2121
dev_image="$(tar xfO "$bldfn" ./imgnames.txt | head -n1)"
2222
echo "Dev Image: $dev_image"
2323

24-
ide_list=("intellij" "goland" "pycharm" "phpstorm" "rubymine" "webstorm" "rider" "clion")
24+
ide_list=("intellij" "goland" "pycharm" "phpstorm" "rubymine" "webstorm" "rider" "clion" "rustrover")
2525

2626
if [ "$qualifier" == "stable" ]; then
2727
prop_list=("pluginImage" "imageLayers[0]")

components/ide/jetbrains/gateway-plugin/src/main/kotlin/io/gitpod/jetbrains/gateway/GitpodStartWorkspaceView.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ class GitpodStartWorkspaceView(
8787
"CLion" -> "https://github.com/gitpod-samples/template-cpp"
8888
"RubyMine" -> "https://github.com/gitpod-samples/template-ruby-on-rails-postgres"
8989
"PhpStorm" -> "https://github.com/gitpod-samples/template-php-laravel-mysql"
90+
"RustRover" -> "https://github.com/gitpod-samples/template-rust-cli"
9091
else -> "https://github.com/gitpod-io/empty"
9192
}
9293
}

components/ide/jetbrains/image/BUILD.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ const ideConfigs = [
3535
name: "clion",
3636
productCode: "CL",
3737
},
38+
{
39+
name: "rustrover",
40+
productCode: "RR",
41+
},
3842
];
3943

4044
const getIDEVersion = function (qualifier, url) {

components/ide/jetbrains/image/create-supervisor-config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ const ideConfigs = [
3838
name: "clion",
3939
displayName: "CLion",
4040
},
41+
{
42+
name: "rustrover",
43+
displayName: "RustRover",
44+
},
4145
];
4246

4347
["stable", "latest"].forEach((qualifier) => {
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"name": "rustrover",
3+
"displayName": "RustRover",
4+
"version": "latest",
5+
"entrypoint": "/ide-desktop/jb-launcher",
6+
"entrypointArgs": [
7+
"{DESKTOPIDEPORT}",
8+
"rustrover",
9+
"Open in RustRover"
10+
],
11+
"readinessProbe": {
12+
"type": "http",
13+
"http": {
14+
"path": "/status"
15+
}
16+
},
17+
"env": {
18+
"JETBRAINS_BACKEND_QUALIFIER": "latest",
19+
"PATH": "/ide-desktop/rustrover-latest/bin:$PATH",
20+
"EDITOR": "/ide-desktop/rustrover-latest/bin/idea-cli open",
21+
"VISUAL": "$EDITOR",
22+
"GP_OPEN_EDITOR": "$EDITOR",
23+
"GIT_EDITOR": "$EDITOR --wait",
24+
"GP_PREVIEW_BROWSER": "/ide-desktop/rustrover-latest/bin/idea-cli preview",
25+
"GP_EXTERNAL_BROWSER": "/ide-desktop/rustrover-latest/bin/idea-cli preview"
26+
},
27+
"prebuild": {
28+
"args": [
29+
"warmup",
30+
"rustrover"
31+
],
32+
"env": {
33+
"JETBRAINS_BACKEND_QUALIFIER": "latest"
34+
}
35+
}
36+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"name": "rustrover",
3+
"displayName": "RustRover",
4+
"version": "stable",
5+
"entrypoint": "/ide-desktop/jb-launcher",
6+
"entrypointArgs": [
7+
"{DESKTOPIDEPORT}",
8+
"rustrover",
9+
"Open in RustRover"
10+
],
11+
"readinessProbe": {
12+
"type": "http",
13+
"http": {
14+
"path": "/status"
15+
}
16+
},
17+
"env": {
18+
"JETBRAINS_BACKEND_QUALIFIER": "stable",
19+
"PATH": "/ide-desktop/rustrover/bin:$PATH",
20+
"EDITOR": "/ide-desktop/rustrover/bin/idea-cli open",
21+
"VISUAL": "$EDITOR",
22+
"GP_OPEN_EDITOR": "$EDITOR",
23+
"GIT_EDITOR": "$EDITOR --wait",
24+
"GP_PREVIEW_BROWSER": "/ide-desktop/rustrover/bin/idea-cli preview",
25+
"GP_EXTERNAL_BROWSER": "/ide-desktop/rustrover/bin/idea-cli preview"
26+
},
27+
"prebuild": {
28+
"args": [
29+
"warmup",
30+
"rustrover"
31+
],
32+
"env": {
33+
"JETBRAINS_BACKEND_QUALIFIER": "stable"
34+
}
35+
}
36+
}

dev/preview/workflow/preview/patch-ide-configmap.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ function replaceImage(image) {
1010
}
1111

1212
for (let ide in json.ideOptions.options) {
13-
if (["clion", "goland", "intellij", "phpstorm", "pycharm", "rider", "rubymine", "webstorm"].includes(ide)) {
13+
if (
14+
["clion", "goland", "intellij", "phpstorm", "pycharm", "rider", "rubymine", "webstorm", "rustrover"].includes(
15+
ide,
16+
)
17+
) {
1418
json.ideOptions.options[ide].versions = json.ideOptions.options[ide].versions?.map((version) => {
1519
version.image = replaceImage(version.image);
1620
version.imageLayers = version.imageLayers.map(replaceImage);

install/installer/pkg/components/ide-service/ide-configmap.json

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -519,8 +519,27 @@
519519
}
520520
]
521521
},
522-
"xterm": {
522+
"rustrover": {
523523
"orderKey": "120",
524+
"title": "RustRover",
525+
"type": "desktop",
526+
"logo": "{{.IdeLogoBase}}/rustroverLogo.svg",
527+
"image": "{{.Repository}}/ide/rustrover:{{.WorkspaceVersions.Workspace.DesktopIdeImages.RustRoverImage.Version}}",
528+
"latestImage": "{{.ResolvedJBImageLatest.RustRover}}",
529+
"pluginImage": "{{.JetBrainsPluginImage}}",
530+
"pluginLatestImage": "{{.JetBrainsPluginLatestImage}}",
531+
"imageLayers": [
532+
"{{.JetBrainsPluginImage}}",
533+
"{{.JetBrainsLauncherImage}}"
534+
],
535+
"latestImageLayers": [
536+
"{{.JetBrainsPluginLatestImage}}",
537+
"{{.JetBrainsLauncherImage}}"
538+
],
539+
"versions": []
540+
},
541+
"xterm": {
542+
"orderKey": "130",
524543
"title": "Terminal",
525544
"type": "browser",
526545
"logo": "{{.IdeLogoBase}}/terminal.svg",
@@ -543,7 +562,8 @@
543562
"rubymine",
544563
"webstorm",
545564
"rider",
546-
"clion"
565+
"clion",
566+
"rustrover"
547567
],
548568
"installationSteps": [
549569
"If you don't see an open dialog in your browser, make sure you have the <a target='_blank' class='gp-link' href='https://www.gitpod.io/docs/ides-and-editors/jetbrains-gateway#getting-started-jetbrains-gateway'>JetBrains Gateway with Gitpod Plugin</a> installed on your machine, and then click <b>${OPEN_LINK_LABEL}</b> below."

0 commit comments

Comments
 (0)