Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/components/ide/gha-update-image/lib/jb-helper/jb-gradle-task-config.ts
2501 views
1
import path from "path";
2
import { AllProductCodes, AllProductIDs, TargetInfo } from "./jb-helper";
3
import { pathToProjectRoot } from "../common";
4
import { parseArgs } from "util";
5
6
export type TaskInfo = TargetInfo & { id: number; taskName: string };
7
8
// Official doc https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html#target-versions-installers:~:text=The%20listing%20of%20all%20present%20installers%20can%20be%20resolved%20with%20updates%20XML%20files%20for%20JetBrains%20IDEs%20and%20Android%20Studio%20as%20well%20as%20by%20executing%20the%20printProductsReleases%20task.
9
// But use https://data.services.jetbrains.com/products/releases?code=GW&type=eap,rc,release&platform=linux seems better
10
11
export const latestBackendPluginGradleTarget: TaskInfo = {
12
id: 1,
13
taskName: "Latest Backend Plugin",
14
productId: "intellij",
15
productCode: "IIU",
16
productType: "eap,rc,release",
17
usePlatformVersionType: "build",
18
gradlePropertiesPath: path.resolve(
19
pathToProjectRoot,
20
"components/ide/jetbrains/backend-plugin/gradle-latest.properties",
21
),
22
gradlePropertiesTemplate: `# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
23
# for insight into build numbers and IntelliJ Platform versions.
24
# revert pluginSinceBuild if it's unnecessary
25
pluginSinceBuild={{pluginSinceBuild}}
26
pluginUntilBuild={{pluginUntilBuild}}
27
# Plugin Verifier integration -> https://github.com/JetBrains/gradle-intellij-plugin#plugin-verifier-dsl
28
# See https://jb.gg/intellij-platform-builds-list for available build versions.
29
pluginVerifierIdeVersions={{pluginVerifierIdeVersions}}
30
# Version from "com.jetbrains.intellij.idea" which can be found at https://www.jetbrains.com/updates/updates.xml or exec \`./gradlew printProductsReleases\`
31
platformVersion={{platformVersion}}
32
`,
33
};
34
35
export const latestGatewayPluginGradleTarget: TaskInfo = {
36
id: 2,
37
taskName: "Latest Frontend Plugin",
38
productId: "gateway",
39
productCode: "GW",
40
productType: "eap,rc,release",
41
usePlatformVersionType: "build",
42
gradlePropertiesPath: path.resolve(
43
pathToProjectRoot,
44
"components/ide/jetbrains/gateway-plugin/gradle-latest.properties",
45
),
46
gradlePropertiesTemplate: `# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
47
# for insight into build numbers and IntelliJ Platform versions.
48
# revert pluginSinceBuild if it's unnecessary
49
pluginSinceBuild={{pluginSinceBuild}}
50
pluginUntilBuild={{pluginUntilBuild}}
51
# Plugin Verifier integration -> https://github.com/JetBrains/gradle-intellij-plugin#plugin-verifier-dsl
52
# See https://jb.gg/intellij-platform-builds-list for available build versions.
53
pluginVerifierIdeVersions={{pluginVerifierIdeVersions}}
54
# Version from "com.jetbrains.gateway" which can be found at https://www.jetbrains.com/updates/updates.xml or exec \`./gradlew printProductsReleases\`
55
platformVersion={{platformVersion}}
56
`,
57
};
58
59
export const stableGatewayPluginGradleTarget: TaskInfo = {
60
id: 3,
61
taskName: "Stable Frontend Plugin",
62
productId: "gateway",
63
productCode: "GW",
64
productType: "release",
65
usePlatformVersionType: "version",
66
gradlePropertiesPath: path.resolve(
67
pathToProjectRoot,
68
"components/ide/jetbrains/gateway-plugin/gradle-stable.properties",
69
),
70
gradlePropertiesTemplate: `# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
71
# for insight into build numbers and IntelliJ Platform versions.
72
# revert pluginSinceBuild if it's unnecessary
73
pluginSinceBuild={{pluginSinceBuild}}
74
pluginUntilBuild={{pluginUntilBuild}}
75
# Plugin Verifier integration -> https://github.com/JetBrains/gradle-intellij-plugin#plugin-verifier-dsl
76
# See https://jb.gg/intellij-platform-builds-list for available build versions.
77
pluginVerifierIdeVersions={{pluginVerifierIdeVersions}}
78
# Version from "com.jetbrains.gateway" which can be found at https://www.jetbrains.com/updates/updates.xml or exec \`./gradlew printProductsReleases\`
79
platformVersion={{platformVersion}}
80
`,
81
};
82
83
export const AllTasks = [
84
latestBackendPluginGradleTarget,
85
latestGatewayPluginGradleTarget,
86
stableGatewayPluginGradleTarget,
87
];
88
89
export const getTaskFromArgs = (requireProductCode: boolean) => {
90
const { values } = parseArgs({
91
args: Bun.argv,
92
options: {
93
task: {
94
type: "string",
95
},
96
productCode: {
97
type: "string",
98
},
99
},
100
allowPositionals: true,
101
});
102
103
const taskID = Number.parseInt(values.task ?? "NaN");
104
105
const target = AllTasks.find((e) => e.id === taskID);
106
if (!target) {
107
throw new Error(
108
`Invalid task id: ${taskID}, update cmd with \`--task="<id>"\`, available tasks: \n\t- ${AllTasks.map(
109
(e) => `(${e.id}) ${e.taskName}`,
110
).join("\n\t- ")}`,
111
);
112
}
113
if (requireProductCode && !values.productCode) {
114
throw new Error(`\`--productCode\` is required, available codes: ${AllProductCodes.join(", ")}`);
115
}
116
if (values.productCode) {
117
const index = AllProductCodes.indexOf(values.productCode as any);
118
if (index === -1) {
119
throw new Error(
120
`Invalid \`--productCode\`: ${values.productCode}, available codes: ${AllProductCodes.join(", ")}`,
121
);
122
}
123
target.productCode = values.productCode as any;
124
target.productId = AllProductIDs[index];
125
}
126
return target;
127
};
128
129