Path: blob/main/components/ide/gha-update-image/lib/jb-helper/jb-gradle-task-config.ts
2501 views
import path from "path";1import { AllProductCodes, AllProductIDs, TargetInfo } from "./jb-helper";2import { pathToProjectRoot } from "../common";3import { parseArgs } from "util";45export type TaskInfo = TargetInfo & { id: number; taskName: string };67// 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.8// But use https://data.services.jetbrains.com/products/releases?code=GW&type=eap,rc,release&platform=linux seems better910export const latestBackendPluginGradleTarget: TaskInfo = {11id: 1,12taskName: "Latest Backend Plugin",13productId: "intellij",14productCode: "IIU",15productType: "eap,rc,release",16usePlatformVersionType: "build",17gradlePropertiesPath: path.resolve(18pathToProjectRoot,19"components/ide/jetbrains/backend-plugin/gradle-latest.properties",20),21gradlePropertiesTemplate: `# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html22# for insight into build numbers and IntelliJ Platform versions.23# revert pluginSinceBuild if it's unnecessary24pluginSinceBuild={{pluginSinceBuild}}25pluginUntilBuild={{pluginUntilBuild}}26# Plugin Verifier integration -> https://github.com/JetBrains/gradle-intellij-plugin#plugin-verifier-dsl27# See https://jb.gg/intellij-platform-builds-list for available build versions.28pluginVerifierIdeVersions={{pluginVerifierIdeVersions}}29# Version from "com.jetbrains.intellij.idea" which can be found at https://www.jetbrains.com/updates/updates.xml or exec \`./gradlew printProductsReleases\`30platformVersion={{platformVersion}}31`,32};3334export const latestGatewayPluginGradleTarget: TaskInfo = {35id: 2,36taskName: "Latest Frontend Plugin",37productId: "gateway",38productCode: "GW",39productType: "eap,rc,release",40usePlatformVersionType: "build",41gradlePropertiesPath: path.resolve(42pathToProjectRoot,43"components/ide/jetbrains/gateway-plugin/gradle-latest.properties",44),45gradlePropertiesTemplate: `# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html46# for insight into build numbers and IntelliJ Platform versions.47# revert pluginSinceBuild if it's unnecessary48pluginSinceBuild={{pluginSinceBuild}}49pluginUntilBuild={{pluginUntilBuild}}50# Plugin Verifier integration -> https://github.com/JetBrains/gradle-intellij-plugin#plugin-verifier-dsl51# See https://jb.gg/intellij-platform-builds-list for available build versions.52pluginVerifierIdeVersions={{pluginVerifierIdeVersions}}53# Version from "com.jetbrains.gateway" which can be found at https://www.jetbrains.com/updates/updates.xml or exec \`./gradlew printProductsReleases\`54platformVersion={{platformVersion}}55`,56};5758export const stableGatewayPluginGradleTarget: TaskInfo = {59id: 3,60taskName: "Stable Frontend Plugin",61productId: "gateway",62productCode: "GW",63productType: "release",64usePlatformVersionType: "version",65gradlePropertiesPath: path.resolve(66pathToProjectRoot,67"components/ide/jetbrains/gateway-plugin/gradle-stable.properties",68),69gradlePropertiesTemplate: `# See https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html70# for insight into build numbers and IntelliJ Platform versions.71# revert pluginSinceBuild if it's unnecessary72pluginSinceBuild={{pluginSinceBuild}}73pluginUntilBuild={{pluginUntilBuild}}74# Plugin Verifier integration -> https://github.com/JetBrains/gradle-intellij-plugin#plugin-verifier-dsl75# See https://jb.gg/intellij-platform-builds-list for available build versions.76pluginVerifierIdeVersions={{pluginVerifierIdeVersions}}77# Version from "com.jetbrains.gateway" which can be found at https://www.jetbrains.com/updates/updates.xml or exec \`./gradlew printProductsReleases\`78platformVersion={{platformVersion}}79`,80};8182export const AllTasks = [83latestBackendPluginGradleTarget,84latestGatewayPluginGradleTarget,85stableGatewayPluginGradleTarget,86];8788export const getTaskFromArgs = (requireProductCode: boolean) => {89const { values } = parseArgs({90args: Bun.argv,91options: {92task: {93type: "string",94},95productCode: {96type: "string",97},98},99allowPositionals: true,100});101102const taskID = Number.parseInt(values.task ?? "NaN");103104const target = AllTasks.find((e) => e.id === taskID);105if (!target) {106throw new Error(107`Invalid task id: ${taskID}, update cmd with \`--task="<id>"\`, available tasks: \n\t- ${AllTasks.map(108(e) => `(${e.id}) ${e.taskName}`,109).join("\n\t- ")}`,110);111}112if (requireProductCode && !values.productCode) {113throw new Error(`\`--productCode\` is required, available codes: ${AllProductCodes.join(", ")}`);114}115if (values.productCode) {116const index = AllProductCodes.indexOf(values.productCode as any);117if (index === -1) {118throw new Error(119`Invalid \`--productCode\`: ${values.productCode}, available codes: ${AllProductCodes.join(", ")}`,120);121}122target.productCode = values.productCode as any;123target.productId = AllProductIDs[index];124}125return target;126};127128129