diff --git a/build.sbt b/build.sbt index b95e794..b775106 100644 --- a/build.sbt +++ b/build.sbt @@ -149,11 +149,9 @@ val pluginsDir = temp / "WEB-INF" / "classes" / "plugins" IO createDirectory (pluginsDir) IO copyFile(Keys.baseDirectory.value / "plugins.json", pluginsDir / "plugins.json") - val plugins = Seq( - ("gitbucket-gist-plugin", "4.9.1"), - ("gitbucket-emoji-plugin", "4.4.0") - ) - plugins.foreach { case (plugin, version) => + + val json = IO read(Keys.baseDirectory.value / "plugins.json") + PluginsJson.parse(json).foreach { case (plugin, version) => IO download(new java.net.URL(s"https://github.com/gitbucket/${plugin}/releases/download/${version}/${plugin}_${scalaBinaryVersion.value}-${version}.jar"), pluginsDir / s"${plugin}_${scalaBinaryVersion.value}-${version}.jar") } diff --git a/project/PluginsJson.scala b/project/PluginsJson.scala new file mode 100644 index 0000000..6f272cd --- /dev/null +++ b/project/PluginsJson.scala @@ -0,0 +1,17 @@ +import com.eclipsesource.json.Json +import scala.collection.JavaConverters._ + +object PluginsJson { + + def parse(json: String): Seq[(String, String)] = { + val value = Json.parse(json) + value.asArray.values.asScala.map { plugin => + val obj = plugin.asObject.get("versions").asArray.asScala.head.asObject + val pluginName = obj.get("file").asString.split("_2.12-").head + val version = obj.get("version").asString + (pluginName, version) + } + } + +} + diff --git a/project/build.sbt b/project/build.sbt index d1017c1..4d5e402 100644 --- a/project/build.sbt +++ b/project/build.sbt @@ -1 +1 @@ -libraryDependencies += "org.json4s" %% "json4s-jackson" % "3.5.1" +libraryDependencies += "com.eclipsesource.minimal-json" % "minimal-json" % "0.9.4"