@@ -7,133 +7,165 @@ import org.gradle.api.Project
7
7
import org.gradle.api.provider.Provider
8
8
import org.gradle.api.provider.ProviderFactory
9
9
10
- object IdeVersions {
11
- fun ideProfile (project : Project ): Profile = ideProfile(project.providers).get()
10
+ enum class IdeFlavor { IC , IU , RD }
12
11
13
- fun ideProfile (providers : ProviderFactory ): Provider <Profile > = resolveIdeProfileName(providers).map {
14
- ideProfiles[it] ? : throw IllegalStateException (" Can't find profile for $it " )
15
- }
12
+ object IdeVersions {
13
+ private val commonPlugins = arrayOf(
14
+ " org.jetbrains.plugins.terminal" ,
15
+ " org.jetbrains.plugins.yaml"
16
+ )
16
17
17
18
private val ideProfiles = listOf (
18
19
Profile (
19
20
name = " 2020.2" ,
20
- communityPlugins = listOf (
21
- " java" ,
22
- " com.intellij.gradle" ,
23
- " org.jetbrains.idea.maven" ,
24
- " PythonCore:202.6397.124" ,
25
- " Docker:202.6397.93"
21
+ community = ProductProfile (
22
+ sdkFlavor = IdeFlavor .IC ,
23
+ sdkVersion = " 2020.2" ,
24
+ plugins = commonPlugins + listOf (
25
+ " java" ,
26
+ " com.intellij.gradle" ,
27
+ " org.jetbrains.idea.maven" ,
28
+ " PythonCore:202.6397.124" ,
29
+ " Docker:202.6397.93"
30
+ )
26
31
),
27
- ultimatePlugins = listOf (
28
- " JavaScript" ,
29
- " JavaScriptDebugger" ,
30
- " com.intellij.database" ,
31
- " Pythonid:202.6397.98" ,
32
- " org.jetbrains.plugins.go:202.6397.20"
32
+ ultimate = ProductProfile (
33
+ sdkFlavor = IdeFlavor .IU ,
34
+ sdkVersion = " 2020.2" ,
35
+ plugins = commonPlugins + listOf (
36
+ " JavaScript" ,
37
+ " JavaScriptDebugger" ,
38
+ " com.intellij.database" ,
39
+ " Pythonid:202.6397.98" ,
40
+ " org.jetbrains.plugins.go:202.6397.20"
41
+ )
33
42
),
34
- riderPlugins = listOf (
35
- " rider-plugins-appender" // Workaround for https://youtrack.jetbrains.com/issue/IDEA-179607
36
- ),
37
- rdGenVersion = " 0.203.161" ,
38
- nugetVersion = " 2020.2.0"
43
+ rider = RiderProfile (
44
+ sdkVersion = " 2020.2" ,
45
+ plugins = commonPlugins + listOf (
46
+ " rider-plugins-appender" // Workaround for https://youtrack.jetbrains.com/issue/IDEA-179607
47
+ ),
48
+ rdGenVersion = " 0.203.161" ,
49
+ nugetVersion = " 2020.2.0"
50
+ )
39
51
),
40
52
Profile (
41
53
name = " 2020.3" ,
42
- communityPlugins = listOf (
43
- " java" ,
44
- " com.intellij.gradle" ,
45
- " org.jetbrains.idea.maven" ,
46
- " PythonCore:203.5981.165" ,
47
- " Docker:203.5981.155"
48
- ),
49
- ultimatePlugins = listOf (
50
- " JavaScript" ,
51
- " JavaScriptDebugger" ,
52
- " com.intellij.database" ,
53
- " Pythonid:203.5981.165" ,
54
- " org.jetbrains.plugins.go:203.5981.114"
54
+ community = ProductProfile (
55
+ sdkFlavor = IdeFlavor .IC ,
56
+ sdkVersion = " 2020.3" ,
57
+ plugins = commonPlugins + listOf (
58
+ " java" ,
59
+ " com.intellij.gradle" ,
60
+ " org.jetbrains.idea.maven" ,
61
+ " PythonCore:203.5981.165" ,
62
+ " Docker:203.5981.155"
63
+ )
55
64
),
56
- riderPlugins = listOf (
57
- " rider-plugins-appender" // Workaround for https://youtrack.jetbrains.com/issue/IDEA-179607
65
+ ultimate = ProductProfile (
66
+ sdkFlavor = IdeFlavor .IU ,
67
+ sdkVersion = " 2020.3" ,
68
+ plugins = commonPlugins + listOf (
69
+ " JavaScript" ,
70
+ " JavaScriptDebugger" ,
71
+ " com.intellij.database" ,
72
+ " Pythonid:203.5981.165" ,
73
+ " org.jetbrains.plugins.go:203.5981.114"
74
+ )
58
75
),
59
- riderSdkOverride = " 2020.3.2" ,
60
- ijSdkOverride = " 2020.3" ,
61
- rdGenVersion = " 0.203.161" ,
62
- nugetVersion = " 2020.3.0"
76
+ rider = RiderProfile (
77
+ sdkVersion = " 2020.3" ,
78
+ plugins = commonPlugins + listOf (
79
+ " rider-plugins-appender" // Workaround for https://youtrack.jetbrains.com/issue/IDEA-179607
80
+ ),
81
+ rdGenVersion = " 0.203.161" ,
82
+ nugetVersion = " 2020.3.0"
83
+ )
63
84
),
64
85
Profile (
65
86
name = " 2021.1" ,
66
- communityPlugins = listOf (
67
- " java" ,
68
- " com.intellij.gradle" ,
69
- " org.jetbrains.idea.maven" ,
70
- " PythonCore:211.6693.119" ,
71
- " Docker:211.6693.111"
72
- ),
73
- ultimatePlugins = listOf (
74
- " JavaScript" ,
75
- // Transitive dependency needed for javascript
76
- // Can remove when https://github.com/JetBrains/gradle-intellij-plugin/issues/608 is fixed
77
- " com.intellij.css" ,
78
- " JavaScriptDebugger" ,
79
- " com.intellij.database" ,
80
- " Pythonid:211.6693.115" ,
81
- " org.jetbrains.plugins.go:211.6693.111"
87
+ community = ProductProfile (
88
+ sdkFlavor = IdeFlavor .IC ,
89
+ sdkVersion = " 2021.1" ,
90
+ plugins = commonPlugins + listOf (
91
+ " java" ,
92
+ " com.intellij.gradle" ,
93
+ " org.jetbrains.idea.maven" ,
94
+ " PythonCore:211.6693.119" ,
95
+ " Docker:211.6693.111"
96
+ )
82
97
),
83
- riderPlugins = listOf (
84
- " rider-plugins-appender" // Workaround for https://youtrack.jetbrains.com/issue/IDEA-179607
98
+ ultimate = ProductProfile (
99
+ sdkFlavor = IdeFlavor .IU ,
100
+ sdkVersion = " 2021.1" ,
101
+ plugins = commonPlugins + listOf (
102
+ " JavaScript" ,
103
+ // Transitive dependency needed for javascript
104
+ // Can remove when https://github.com/JetBrains/gradle-intellij-plugin/issues/608 is fixed
105
+ " com.intellij.css" ,
106
+ " JavaScriptDebugger" ,
107
+ " com.intellij.database" ,
108
+ " Pythonid:211.6693.115" ,
109
+ " org.jetbrains.plugins.go:211.6693.111"
110
+ )
85
111
),
86
- riderSdkOverride = " 2021.1.1" ,
87
- rdGenVersion = " 0.211.234" ,
88
- nugetVersion = " 2021.1.0"
89
- )
112
+ rider = RiderProfile (
113
+ sdkVersion = " 2021.1.1" ,
114
+ plugins = commonPlugins + listOf (
115
+ " rider-plugins-appender" // Workaround for https://youtrack.jetbrains.com/issue/IDEA-179607
116
+ ),
117
+ rdGenVersion = " 0.211.234" ,
118
+ nugetVersion = " 2021.1.0"
119
+ )
120
+ ),
90
121
).associateBy { it.name }
91
122
123
+ fun ideProfile (project : Project ): Profile = ideProfile(project.providers).get()
124
+
125
+ fun ideProfile (providers : ProviderFactory ): Provider <Profile > = resolveIdeProfileName(providers).map {
126
+ ideProfiles[it] ? : throw IllegalStateException (" Can't find profile for $it " )
127
+ }
128
+
92
129
private fun resolveIdeProfileName (providers : ProviderFactory ): Provider <String > =
93
130
providers.environmentVariable(" ALTERNATIVE_IDE_PROFILE_NAME" ).forUseAtConfigurationTime().orElse(
94
131
providers.gradleProperty(" ideProfileName" ).forUseAtConfigurationTime()
95
132
)
96
133
}
97
134
98
135
open class ProductProfile (
136
+ val sdkFlavor : IdeFlavor ,
99
137
val sdkVersion : String ,
100
138
val plugins : Array <String >
101
- )
139
+ ) {
140
+ fun version (): String? = if (! isLocalPath(sdkVersion)) {
141
+ sdkFlavor.name + " -" + sdkVersion
142
+ } else {
143
+ null
144
+ }
145
+
146
+ fun localPath (): String? = sdkVersion.takeIf {
147
+ isLocalPath(it)
148
+ }
149
+
150
+ private fun isLocalPath (str : String ) = str.startsWith(" /" ) || str.getOrNull(1 ) == ' :'
151
+ }
102
152
103
153
class RiderProfile (
104
154
sdkVersion : String ,
105
155
plugins : Array <String >,
106
- val rdGenVersion : String ,
107
- val nugetVersion : String
108
- ) : ProductProfile(sdkVersion, plugins)
156
+ val rdGenVersion : String , // https://www.myget.org/feed/rd-snapshots/package/maven/com.jetbrains.rd/rd-gen
157
+ val nugetVersion : String // https://www.nuget.org/packages/JetBrains.Rider.SDK/
158
+ ) : ProductProfile(IdeFlavor . RD , sdkVersion, plugins)
109
159
110
160
class Profile (
111
161
val name : String ,
112
162
val shortName : String = shortenedIdeProfileName(name),
113
163
val sinceVersion : String = shortName,
114
164
val untilVersion : String = " $sinceVersion .*" ,
115
- communityPlugins : List <String >,
116
- ultimatePlugins : List <String >,
117
- riderPlugins : List <String >,
118
- ijSdkOverride : String? = null ,
119
- riderSdkOverride : String? = null ,
120
- rdGenVersion : String , // https://www.myget.org/feed/rd-snapshots/package/maven/com.jetbrains.rd/rd-gen
121
- nugetVersion : String // https://www.nuget.org/packages/JetBrains.Rider.SDK/
122
- ) {
123
- private val commonPlugins = arrayOf(
124
- " org.jetbrains.plugins.terminal" ,
125
- " org.jetbrains.plugins.yaml"
126
- )
127
-
128
- val community: ProductProfile = ProductProfile (sdkVersion = " IC-${ijSdkOverride ? : name} " , plugins = commonPlugins + communityPlugins)
129
- val ultimate: ProductProfile = ProductProfile (sdkVersion = " IU-${ijSdkOverride ? : name} " , plugins = commonPlugins + ultimatePlugins)
130
- val rider: RiderProfile = RiderProfile (
131
- sdkVersion = " RD-${riderSdkOverride ? : name} " ,
132
- plugins = commonPlugins + riderPlugins,
133
- rdGenVersion = rdGenVersion,
134
- nugetVersion = nugetVersion
135
- )
136
- }
165
+ val community : ProductProfile ,
166
+ val ultimate : ProductProfile ,
167
+ val rider : RiderProfile ,
168
+ )
137
169
138
170
private fun shortenedIdeProfileName (sdkName : String ): String {
139
171
val parts = sdkName.trim().split(" ." )
0 commit comments