mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-16 18:35:51 +01:00
(refs #1625)Copy bundled plugins in initialization process
This commit is contained in:
1
src/main/resources/plugins/plugins
Normal file
1
src/main/resources/plugins/plugins
Normal file
@@ -0,0 +1 @@
|
|||||||
|
#gitbucket-gist-plugin_2.12-4.9.0.jar
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package gitbucket.core.servlet
|
package gitbucket.core.servlet
|
||||||
|
|
||||||
import java.io.File
|
import java.io.{File, FileOutputStream}
|
||||||
|
|
||||||
import akka.event.Logging
|
import akka.event.Logging
|
||||||
import com.typesafe.config.ConfigFactory
|
import com.typesafe.config.ConfigFactory
|
||||||
@@ -9,15 +9,18 @@ import gitbucket.core.plugin.PluginRegistry
|
|||||||
import gitbucket.core.service.{ActivityService, SystemSettingsService}
|
import gitbucket.core.service.{ActivityService, SystemSettingsService}
|
||||||
import gitbucket.core.util.DatabaseConfig
|
import gitbucket.core.util.DatabaseConfig
|
||||||
import gitbucket.core.util.Directory._
|
import gitbucket.core.util.Directory._
|
||||||
|
import gitbucket.core.util.SyntaxSugars._
|
||||||
import gitbucket.core.util.JDBCUtil._
|
import gitbucket.core.util.JDBCUtil._
|
||||||
import gitbucket.core.model.Profile.profile.blockingApi._
|
import gitbucket.core.model.Profile.profile.blockingApi._
|
||||||
import io.github.gitbucket.solidbase.Solidbase
|
import io.github.gitbucket.solidbase.Solidbase
|
||||||
import io.github.gitbucket.solidbase.manager.JDBCVersionManager
|
import io.github.gitbucket.solidbase.manager.JDBCVersionManager
|
||||||
import javax.servlet.{ServletContextListener, ServletContextEvent}
|
import javax.servlet.{ServletContextEvent, ServletContextListener}
|
||||||
import org.apache.commons.io.FileUtils
|
|
||||||
|
import org.apache.commons.io.{FileUtils, IOUtils}
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import akka.actor.{Actor, Props, ActorSystem}
|
import akka.actor.{Actor, ActorSystem, Props}
|
||||||
import com.typesafe.akka.extension.quartz.QuartzSchedulerExtension
|
import com.typesafe.akka.extension.quartz.QuartzSchedulerExtension
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import scala.collection.JavaConverters._
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -106,6 +109,22 @@ class InitializeListener extends ServletContextListener with SystemSettingsServi
|
|||||||
throw new IllegalStateException(s"Initialization failed. GitBucket version is ${gitbucketVersion}, but database version is ${databaseVersion}.")
|
throw new IllegalStateException(s"Initialization failed. GitBucket version is ${gitbucketVersion}, but database version is ${databaseVersion}.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Install bundled plugins
|
||||||
|
logger.info("Install bundled plugins")
|
||||||
|
val cl = Thread.currentThread.getContextClassLoader
|
||||||
|
try {
|
||||||
|
using(cl.getResourceAsStream("plugins/plugins")){ pluginsFile =>
|
||||||
|
val plugins = IOUtils.toString(pluginsFile, "UTF-8").split("\n").map(_.trim)
|
||||||
|
plugins.collect { case plugin if plugin.nonEmpty && !plugin.startsWith("#") =>
|
||||||
|
val file = new File(PluginHome, plugin)
|
||||||
|
logger.info(s"Copy ${plugin} to ${file.getAbsolutePath}")
|
||||||
|
using(cl.getResourceAsStream("plugins/" + plugin), new FileOutputStream(file)){ case (in, out) => IOUtils.copy(in, out) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
case e: Exception => logger.error("Error in installing bundled plugin", e)
|
||||||
|
}
|
||||||
|
|
||||||
// Load plugins
|
// Load plugins
|
||||||
logger.info("Initialize plugins")
|
logger.info("Initialize plugins")
|
||||||
PluginRegistry.initialize(event.getServletContext, loadSystemSettings(), conn)
|
PluginRegistry.initialize(event.getServletContext, loadSystemSettings(), conn)
|
||||||
|
|||||||
Reference in New Issue
Block a user