mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-26 16:28:12 -07:00
Track dependencies downloaded on the server's websocket.
This commit is contained in:
parent
a52dd19f3f
commit
5eb92ed10b
6 changed files with 50 additions and 12 deletions
|
@ -12,6 +12,7 @@ import com.beust.kobalt.maven.aether.Aether
|
|||
import com.beust.kobalt.misc.DependencyExecutor
|
||||
import com.beust.kobalt.misc.KobaltExecutors
|
||||
import com.beust.kobalt.plugin.publish.BintrayApi
|
||||
import com.google.common.eventbus.EventBus
|
||||
import com.google.inject.AbstractModule
|
||||
import com.google.inject.Provider
|
||||
import com.google.inject.Singleton
|
||||
|
@ -49,13 +50,16 @@ public open class MainModule(val args: Args, val settings: KobaltSettings) : Abs
|
|||
bind(Args::class.java).toProvider(Provider<Args> {
|
||||
args
|
||||
})
|
||||
EventBus().let { eventBus ->
|
||||
bind(EventBus::class.java).toInstance(eventBus)
|
||||
bind(Aether::class.java).toInstance(Aether(settings.localRepo, settings, eventBus))
|
||||
}
|
||||
bind(PluginInfo::class.java).toProvider(Provider<PluginInfo> {
|
||||
PluginInfo.readKobaltPluginXml()
|
||||
}).`in`(Singleton::class.java)
|
||||
bind(KobaltSettings::class.java).toProvider(Provider<KobaltSettings> {
|
||||
settings
|
||||
}).`in`(Singleton::class.java)
|
||||
bind(Aether::class.java).toInstance(Aether(settings.localRepo,settings))
|
||||
|
||||
// bindListener(Matchers.any(), object: TypeListener {
|
||||
// override fun <I> hear(typeLiteral: TypeLiteral<I>?, typeEncounter: TypeEncounter<I>?) {
|
||||
|
|
|
@ -6,7 +6,10 @@ import com.beust.kobalt.api.Kobalt
|
|||
import com.beust.kobalt.api.Project
|
||||
import com.beust.kobalt.app.Templates
|
||||
import com.beust.kobalt.internal.PluginInfo
|
||||
import com.beust.kobalt.internal.eventbus.ArtifactDownloadedEvent
|
||||
import com.google.common.collect.ListMultimap
|
||||
import com.google.common.eventbus.EventBus
|
||||
import com.google.common.eventbus.Subscribe
|
||||
import com.google.gson.Gson
|
||||
import org.eclipse.jetty.websocket.api.RemoteEndpoint
|
||||
import org.eclipse.jetty.websocket.api.Session
|
||||
|
@ -105,10 +108,26 @@ class GetDependenciesChatHandler : WebSocketListener {
|
|||
if (buildFileParams != null) {
|
||||
val buildFile = buildFileParams[0]
|
||||
|
||||
fun <T> getInstance(cls: Class<T>) : T = Kobalt.INJECTOR.getInstance(cls)
|
||||
|
||||
val result = if (buildFile != null) {
|
||||
// Track all the downloads that this dependency call might trigger and
|
||||
// send them as a progress message to the web socket
|
||||
val eventBus = getInstance(EventBus::class.java)
|
||||
val busListener = object {
|
||||
@Subscribe
|
||||
fun onArtifactDownloaded(event: ArtifactDownloadedEvent) {
|
||||
sendWebsocketCommand(s.remote, ProgressCommand.NAME,
|
||||
ProgressCommand(null, "Downloaded " + event.artifactId))
|
||||
}
|
||||
}
|
||||
eventBus.register(busListener)
|
||||
|
||||
// Get the dependencies for the requested build file and send progress to the web
|
||||
// socket for each project
|
||||
try {
|
||||
val dependencyData = Kobalt.INJECTOR.getInstance(DependencyData::class.java)
|
||||
val args = Kobalt.INJECTOR.getInstance(Args::class.java)
|
||||
val dependencyData = getInstance(DependencyData::class.java)
|
||||
val args = getInstance(Args::class.java)
|
||||
|
||||
dependencyData.dependenciesDataFor(buildFile, args, object : IProgressListener {
|
||||
override fun onProgress(progress: Int?, message: String?) {
|
||||
|
@ -116,15 +135,16 @@ class GetDependenciesChatHandler : WebSocketListener {
|
|||
}
|
||||
})
|
||||
} catch(ex: Exception) {
|
||||
ex.printStackTrace()
|
||||
DependencyData.GetDependenciesData(errorMessage = ex.message)
|
||||
} finally {
|
||||
SparkServer.cleanUpCallback()
|
||||
eventBus.unregister(busListener)
|
||||
}
|
||||
} else {
|
||||
DependencyData.GetDependenciesData(
|
||||
errorMessage = "buildFile wasn't passed in the query parameter")
|
||||
}
|
||||
println("GOT DEPENDENCY DATA: $result")
|
||||
sendWebsocketCommand(s.remote, DependencyData.GetDependenciesData.NAME, result)
|
||||
s.close()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue