mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-06 21:45:50 +01:00
(refs #464)Improve plugin installing/updating behavior
This commit is contained in:
@@ -139,9 +139,10 @@ trait SystemSettingsControllerBase extends ControllerBase {
|
|||||||
val installedPlugins = plugin.PluginSystem.plugins
|
val installedPlugins = plugin.PluginSystem.plugins
|
||||||
getAvailablePlugins(installedPlugins).filter(x => pluginIds.contains(x.id)).foreach { plugin =>
|
getAvailablePlugins(installedPlugins).filter(x => pluginIds.contains(x.id)).foreach { plugin =>
|
||||||
val pluginDir = new java.io.File(PluginHome, plugin.id)
|
val pluginDir = new java.io.File(PluginHome, plugin.id)
|
||||||
if(!pluginDir.exists){
|
if(pluginDir.exists){
|
||||||
FileUtils.copyDirectory(new java.io.File(dir, plugin.repository + "/" + plugin.id), pluginDir)
|
FileUtils.deleteDirectory(pluginDir)
|
||||||
}
|
}
|
||||||
|
FileUtils.copyDirectory(new java.io.File(dir, plugin.repository + "/" + plugin.id), pluginDir)
|
||||||
PluginSystem.installPlugin(plugin.id)
|
PluginSystem.installPlugin(plugin.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ trait PluginComponent extends TemplateComponent { self: Profile =>
|
|||||||
lazy val Plugins = TableQuery[Plugins]
|
lazy val Plugins = TableQuery[Plugins]
|
||||||
|
|
||||||
class Plugins(tag: Tag) extends Table[Plugin](tag, "PLUGIN"){
|
class Plugins(tag: Tag) extends Table[Plugin](tag, "PLUGIN"){
|
||||||
val pluginId = column[String]("PLUGIN_ID")
|
val pluginId = column[String]("PLUGIN_ID", O PrimaryKey)
|
||||||
val version = column[String]("VERSION")
|
val version = column[String]("VERSION")
|
||||||
def * = (pluginId, version) <> (Plugin.tupled, Plugin.unapply)
|
def * = (pluginId, version) <> (Plugin.tupled, Plugin.unapply)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ object PluginSystem extends PluginService {
|
|||||||
migrate(session.conn, pluginId, plugin.get.version)
|
migrate(session.conn, pluginId, plugin.get.version)
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
case e: Exception => logger.warn(s"Error in plugin loading for ${scalaFile.getAbsolutePath}", e)
|
case e: Throwable => logger.warn(s"Error in plugin loading for ${scalaFile.getAbsolutePath}", e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,14 +6,19 @@ import model.Plugin
|
|||||||
|
|
||||||
trait PluginService {
|
trait PluginService {
|
||||||
|
|
||||||
def getPlugins()(implicit s: Session): List[Plugin] = Plugins.sortBy(_.pluginId).list
|
def getPlugins()(implicit s: Session): List[Plugin] =
|
||||||
|
Plugins.sortBy(_.pluginId).list
|
||||||
|
|
||||||
def registerPlugin(plugin: Plugin)(implicit s: Session): Unit = Plugins.insert(plugin)
|
def registerPlugin(plugin: Plugin)(implicit s: Session): Unit =
|
||||||
|
Plugins.insert(plugin)
|
||||||
|
|
||||||
def updatePlugin(plugin: Plugin)(implicit s: Session): Unit = Plugins.update(plugin)
|
def updatePlugin(plugin: Plugin)(implicit s: Session): Unit =
|
||||||
|
Plugins.filter(_.pluginId === plugin.pluginId.bind).map(_.version).update(plugin.version)
|
||||||
|
|
||||||
def deletePlugin(pluginId: String)(implicit s: Session): Unit = Plugins.filter(_.pluginId === pluginId.bind).delete
|
def deletePlugin(pluginId: String)(implicit s: Session): Unit =
|
||||||
|
Plugins.filter(_.pluginId === pluginId.bind).delete
|
||||||
|
|
||||||
def getPlugin(pluginId: String)(implicit s: Session): Option[Plugin] = Plugins.filter(_.pluginId === pluginId.bind).firstOption
|
def getPlugin(pluginId: String)(implicit s: Session): Option[Plugin] =
|
||||||
|
Plugins.filter(_.pluginId === pluginId.bind).firstOption
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user