Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8f1d3a3

Browse files
authored
Support for toolbox 2.6.0.38881 (#20)
- localization support is now mandatory- initial support for gradle toolbox plugin (structure)- migrated state management to SateFlow coroutine API- refactored service dependency injection- better logging
1 parentf0740a8 commit8f1d3a3

File tree

74 files changed

+954
-715
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+954
-715
lines changed

‎build.gradle.kts

Lines changed: 106 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1+
importcom.fasterxml.jackson.databind.SerializationFeature
2+
importcom.fasterxml.jackson.module.kotlin.jacksonMapperBuilder
13
importcom.github.jk1.license.filter.ExcludeTransitiveDependenciesFilter
24
importcom.github.jk1.license.render.JsonReportRenderer
5+
importcom.jetbrains.plugin.structure.toolbox.ToolboxMeta
6+
importcom.jetbrains.plugin.structure.toolbox.ToolboxPluginDescriptor
37
importorg.jetbrains.intellij.pluginRepository.PluginRepositoryFactory
48
importorg.jetbrains.kotlin.com.intellij.openapi.util.SystemInfoRt
59
importorg.jetbrains.kotlin.gradle.dsl.JvmTarget
610
importjava.nio.file.Path
11+
importkotlin.io.path.createDirectories
712
importkotlin.io.path.div
13+
importkotlin.io.path.writeText
814

915
plugins {
1016
alias(libs.plugins.kotlin)
@@ -14,23 +20,31 @@ plugins {
1420
alias(libs.plugins.ksp)
1521
alias(libs.plugins.gradle.wrapper)
1622
alias(libs.plugins.changelog)
23+
alias(libs.plugins.gettext)
1724
}
1825

19-
buildscript {
20-
dependencies {
21-
classpath(libs.marketplace.client)
22-
}
23-
}
2426

2527
repositories {
2628
mavenCentral()
2729
maven("https://packages.jetbrains.team/maven/p/tbx/toolbox-api")
2830
}
2931

32+
buildscript {
33+
repositories {
34+
mavenCentral()
35+
}
36+
37+
dependencies {
38+
classpath(libs.marketplace.client)
39+
classpath(libs.plugin.structure)
40+
}
41+
}
42+
3043
jvmWrapper {
3144
unixJvmInstallDir="jvm"
3245
winJvmInstallDir="jvm"
33-
linuxAarch64JvmUrl="https://cache-redirector.jetbrains.com/intellij-jbr/jbr_jcef-21.0.5-linux-aarch64-b631.28.tar.gz"
46+
linuxAarch64JvmUrl=
47+
"https://cache-redirector.jetbrains.com/intellij-jbr/jbr_jcef-21.0.5-linux-aarch64-b631.28.tar.gz"
3448
linuxX64JvmUrl="https://cache-redirector.jetbrains.com/intellij-jbr/jbr_jcef-21.0.5-linux-x64-b631.28.tar.gz"
3549
macAarch64JvmUrl="https://cache-redirector.jetbrains.com/intellij-jbr/jbr_jcef-21.0.5-osx-aarch64-b631.28.tar.gz"
3650
macX64JvmUrl="https://cache-redirector.jetbrains.com/intellij-jbr/jbr_jcef-21.0.5-osx-x64-b631.28.tar.gz"
@@ -39,24 +53,43 @@ jvmWrapper {
3953

4054
dependencies {
4155
compileOnly(libs.bundles.toolbox.plugin.api)
42-
implementation(libs.slf4j)
43-
implementation(libs.bundles.serialization)
44-
implementation(libs.coroutines.core)
56+
compileOnly(libs.bundles.serialization)
57+
compileOnly(libs.coroutines.core)
4558
implementation(libs.okhttp)
4659
implementation(libs.exec)
4760
implementation(libs.moshi)
4861
ksp(libs.moshi.codegen)
4962
implementation(libs.retrofit)
5063
implementation(libs.retrofit.moshi)
5164
testImplementation(kotlin("test"))
65+
testImplementation(libs.mokk)
66+
testImplementation(libs.bundles.toolbox.plugin.api)
5267
}
5368

54-
val pluginId= properties("group")
55-
val pluginName= properties("name")
56-
val pluginVersion= properties("version")
69+
val extension=ExtensionJson(
70+
id= properties("group"),
71+
72+
version= properties("version"),
73+
meta=ExtensionJsonMeta(
74+
name="Coder Toolbox",
75+
description="Connects your JetBrains IDE to Coder workspaces",
76+
vendor="Coder",
77+
url="https://github.com/coder/coder-jetbrains-toolbox-plugin",
78+
)
79+
)
80+
81+
val extensionJsonFile= layout.buildDirectory.file("generated/extension.json")
82+
val extensionJson by tasks.registering {
83+
inputs.property("extension", extension.toString())
84+
85+
outputs.file(extensionJsonFile)
86+
doLast {
87+
generateExtensionJson(extension, extensionJsonFile.get().asFile.toPath())
88+
}
89+
}
5790

5891
changelog {
59-
version.set(pluginVersion)
92+
version.set(extension.version)
6093
groups.set(emptyList())
6194
title.set("Coder Toolbox Plugin Changelog")
6295
}
@@ -76,24 +109,30 @@ tasks.test {
76109
useJUnitPlatform()
77110
}
78111

79-
val assemblePlugin by tasks.registering(Jar::class) {
80-
archiveBaseName.set(pluginId)
81-
from(sourceSets.main.get().output)
112+
113+
tasks.jar {
114+
archiveBaseName.set(extension.id)
115+
dependsOn(extensionJson)
116+
from(extensionJson.get().outputs)
82117
}
83118

84119
val copyPlugin by tasks.creating(Sync::class.java) {
85-
dependsOn(assemblePlugin)
86-
fromCompileDependencies()
120+
dependsOn(tasks.jar)
121+
dependsOn(tasks.getByName("generateLicenseReport"))
87122

123+
fromCompileDependencies()
88124
into(getPluginInstallDir())
89125
}
90126

91127
fun CopySpec.fromCompileDependencies() {
92-
from(assemblePlugin.get().outputs.files)
128+
from(tasks.jar)
129+
from(extensionJson.get().outputs.files)
93130
from("src/main/resources") {
94-
include("extension.json")
95131
include("dependencies.json")
132+
}
133+
from("src/main/resources") {
96134
include("icon.svg")
135+
rename("icon.svg","pluginIcon.svg")
97136
}
98137

99138
// Copy dependencies, excluding those provided by Toolbox.
@@ -106,18 +145,20 @@ fun CopySpec.fromCompileDependencies() {
106145
"core-api",
107146
"ui-api",
108147
"annotations",
148+
"localization-api"
109149
).any { file.name.contains(it) }
110150
}
111151
},
112152
)
113153
}
114154

115155
val pluginZip by tasks.creating(Zip::class) {
116-
dependsOn(assemblePlugin)
156+
archiveBaseName.set(properties("name"))
157+
dependsOn(tasks.jar)
158+
dependsOn(tasks.getByName("generateLicenseReport"))
117159

118160
fromCompileDependencies()
119-
into(pluginId)
120-
archiveBaseName.set(pluginName)
161+
into(extension.id)// folder like com.coder.toolbox
121162
}
122163

123164
tasks.register("cleanAll",Delete::class.java) {
@@ -142,7 +183,7 @@ private fun getPluginInstallDir(): Path {
142183
else-> error("Unknown os")
143184
}/"plugins"
144185

145-
return pluginsDir/pluginId
186+
return pluginsDir/extension.id
146187
}
147188

148189
val publishPlugin by tasks.creating {
@@ -158,17 +199,49 @@ val publishPlugin by tasks.creating {
158199
// instance.uploader.uploadNewPlugin(pluginZip.outputs.files.singleFile, listOf("toolbox", "gateway"), LicenseUrl.APACHE_2_0, ProductFamily.TOOLBOX)
159200

160201
// subsequent updates
161-
instance.uploader.upload(pluginId, pluginZip.outputs.files.singleFile)
202+
instance.uploader.upload(extension.id, pluginZip.outputs.files.singleFile)
162203
}
163204
}
164205

165-
// For use with kotlin-language-server.
166-
tasks.register("classpath") {
167-
doFirst {
168-
File("classpath").writeText(
169-
sourceSets["main"].runtimeClasspath.asPath
206+
funproperties(key:String)= project.findProperty(key).toString()
207+
208+
gettext {
209+
potFile= project.layout.projectDirectory.file("src/main/resources/localization/defaultMessages.pot")
210+
keywords=listOf("ptrc:1c,2","ptrl")
211+
}
212+
213+
// region will be moved to the gradle plugin late
214+
data classExtensionJsonMeta(
215+
valname:String,
216+
valdescription:String,
217+
valvendor:String,
218+
valurl:String?,
219+
)
220+
221+
data classExtensionJson(
222+
valid:String,
223+
valversion:String,
224+
valmeta:ExtensionJsonMeta,
225+
)
226+
227+
fungenerateExtensionJson(extensionJson:ExtensionJson,destinationFile:Path) {
228+
val descriptor=ToolboxPluginDescriptor(
229+
id= extensionJson.id,
230+
version= extensionJson.version,
231+
apiVersion= libs.versions.toolbox.plugin.api.get(),
232+
meta=ToolboxMeta(
233+
name= extensionJson.meta.name,
234+
description= extensionJson.meta.description,
235+
vendor= extensionJson.meta.vendor,
236+
url= extensionJson.meta.url,
170237
)
171-
}
238+
)
239+
destinationFile.parent.createDirectories()
240+
destinationFile.writeText(
241+
jacksonMapperBuilder()
242+
.enable(SerializationFeature.INDENT_OUTPUT)
243+
.build()
244+
.writeValueAsString(descriptor)
245+
)
172246
}
173-
174-
funproperties(key:String)= project.findProperty(key).toString()
247+
// endregion

‎gradle/libs.versions.toml

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
[versions]
2-
toolbox-plugin-api ="0.7.2.6.0.38311"
2+
toolbox-plugin-api ="1.0.38881"
33
kotlin ="2.1.0"
44
coroutines ="1.10.1"
55
serialization ="1.8.0"
66
okhttp ="4.10.0"
7-
slf4j ="2.0.17"
87
dependency-license-report ="2.9"
98
marketplace-client ="2.0.45"
109
gradle-wrapper ="0.14.0"
@@ -13,6 +12,9 @@ moshi = "1.15.2"
1312
ksp ="2.1.0-1.0.29"
1413
retrofit ="2.11.0"
1514
changelog ="2.2.1"
15+
gettext ="0.7.0"
16+
plugin-structure ="3.298"
17+
mockk ="1.13.17"
1618

1719
[libraries]
1820
toolbox-core-api = {module ="com.jetbrains.toolbox:core-api",version.ref ="toolbox-plugin-api" }
@@ -23,23 +25,24 @@ serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-cor
2325
serialization-json = {module ="org.jetbrains.kotlinx:kotlinx-serialization-json",version.ref ="serialization" }
2426
serialization-json-okio = {module ="org.jetbrains.kotlinx:kotlinx-serialization-json-okio",version.ref ="serialization" }
2527
okhttp = {module ="com.squareup.okhttp3:okhttp",version.ref ="okhttp" }
26-
slf4j = {module ="org.slf4j:slf4j-api",version.ref ="slf4j" }
2728
exec = {module ="org.zeroturnaround:zt-exec",version.ref ="exec" }
28-
moshi = {module ="com.squareup.moshi:moshi",version.ref ="moshi"}
29-
moshi-codegen = {module ="com.squareup.moshi:moshi-kotlin-codegen",version.ref ="moshi"}
30-
retrofit = {module ="com.squareup.retrofit2:retrofit",version.ref ="retrofit"}
31-
retrofit-moshi = {module ="com.squareup.retrofit2:converter-moshi",version.ref ="retrofit"}
32-
29+
moshi = {module ="com.squareup.moshi:moshi",version.ref ="moshi" }
30+
moshi-codegen = {module ="com.squareup.moshi:moshi-kotlin-codegen",version.ref ="moshi" }
31+
retrofit = {module ="com.squareup.retrofit2:retrofit",version.ref ="retrofit" }
32+
retrofit-moshi = {module ="com.squareup.retrofit2:converter-moshi",version.ref ="retrofit" }
33+
plugin-structure = {module ="org.jetbrains.intellij.plugins:structure-toolbox",version.ref ="plugin-structure" }
34+
mokk = {module ="io.mockk:mockk",version.ref ="mockk" }
3335
marketplace-client = {module ="org.jetbrains.intellij:plugin-repository-rest-client",version.ref ="marketplace-client" }
3436

3537
[bundles]
36-
serialization = ["serialization-core","serialization-json","serialization-json-okio"]
37-
toolbox-plugin-api = ["toolbox-core-api","toolbox-ui-api","toolbox-remote-dev-api"]
38+
serialization = ["serialization-core","serialization-json","serialization-json-okio"]
39+
toolbox-plugin-api = ["toolbox-core-api","toolbox-ui-api","toolbox-remote-dev-api"]
3840

3941
[plugins]
4042
kotlin = {id ="org.jetbrains.kotlin.jvm",version.ref ="kotlin" }
4143
serialization = {id ="org.jetbrains.kotlin.plugin.serialization",version.ref ="kotlin" }
4244
dependency-license-report = {id ="com.github.jk1.dependency-license-report",version.ref ="dependency-license-report" }
43-
ksp = {id ="com.google.devtools.ksp",version.ref ="ksp"}
45+
ksp = {id ="com.google.devtools.ksp",version.ref ="ksp"}
4446
gradle-wrapper = {id ="me.filippov.gradle.jvm.wrapper",version.ref ="gradle-wrapper" }
45-
changelog = {id ="org.jetbrains.changelog",version.ref ="changelog" }
47+
changelog = {id ="org.jetbrains.changelog",version.ref ="changelog" }
48+
gettext = {id ="name.kropp.kotlinx-gettext",version.ref ="gettext" }

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp