Download bundle plugins from plugins.json

This commit is contained in:
Naoki Takezoe
2017-07-24 20:26:30 +09:00
parent d39c371635
commit f4b910c268
3 changed files with 21 additions and 6 deletions

View File

@@ -149,11 +149,9 @@ executableKey := {
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")
}

17
project/PluginsJson.scala Normal file
View File

@@ -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)
}
}
}

View File

@@ -1 +1 @@
libraryDependencies += "org.json4s" %% "json4s-jackson" % "3.5.1"
libraryDependencies += "com.eclipsesource.minimal-json" % "minimal-json" % "0.9.4"