mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-27 00:38:11 -07:00
Return buildContentRoots to the plug-in.
This commit is contained in:
parent
a6836fbd79
commit
4ea4f0a58c
5 changed files with 56 additions and 48 deletions
|
@ -76,7 +76,7 @@ class BuildFileCompiler @Inject constructor(@Assisted("buildSources") val buildS
|
||||||
}
|
}
|
||||||
|
|
||||||
class FindProjectResult(val context: KobaltContext, val projects: List<Project>, val pluginUrls: List<URL>,
|
class FindProjectResult(val context: KobaltContext, val projects: List<Project>, val pluginUrls: List<URL>,
|
||||||
val buildSourceDirectories: List<String>, val taskResult: TaskResult)
|
val buildContentRoots: List<String>, val taskResult: TaskResult)
|
||||||
|
|
||||||
private fun findProjects(context: KobaltContext): FindProjectResult {
|
private fun findProjects(context: KobaltContext): FindProjectResult {
|
||||||
val root = buildSources.root
|
val root = buildSources.root
|
||||||
|
|
|
@ -40,7 +40,8 @@ class BuildFiles @Inject constructor(val factory: BuildFileCompiler.IFactory,
|
||||||
|
|
||||||
class BuildFileWithBuildScript(val file: File, val buildScriptInfo: BuildScriptInfo)
|
class BuildFileWithBuildScript(val file: File, val buildScriptInfo: BuildScriptInfo)
|
||||||
|
|
||||||
class BuildFileParseResult(val buildKt: File, val buildSourceDirectories: List<String>)
|
class BuildFileParseResult(val projectRoot: String, val buildKt: File,
|
||||||
|
val buildSourceDirectories: List<String>)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the new Build.kt
|
* @return the new Build.kt
|
||||||
|
@ -125,8 +126,9 @@ class BuildFiles @Inject constructor(val factory: BuildFileCompiler.IFactory,
|
||||||
this
|
this
|
||||||
}
|
}
|
||||||
|
|
||||||
val newDirs = listOf(projectDir) + newSourceDirs.flatMap{ it.dirs }
|
val newDirs = listOf(File(BuildFiles.buildContentRoot(projectDir)).relativeTo(File(projectDir)).path) +
|
||||||
return BuildFileParseResult(newBuildFile, newDirs)
|
newSourceDirs.flatMap{ it.dirs.map { BuildFiles.buildContentRoot(it)} }
|
||||||
|
return BuildFileParseResult(projectDir, newBuildFile, newDirs)
|
||||||
}
|
}
|
||||||
|
|
||||||
class SplitBuildFile(val imports: List<String>, val code: List<String>, val containsProfiles: Boolean)
|
class SplitBuildFile(val imports: List<String>, val code: List<String>, val containsProfiles: Boolean)
|
||||||
|
@ -149,6 +151,10 @@ class BuildFiles @Inject constructor(val factory: BuildFileCompiler.IFactory,
|
||||||
val BUILD_SCRIPT_REGEXP: Pattern = Pattern.compile("^val.*buildScript.*\\{")
|
val BUILD_SCRIPT_REGEXP: Pattern = Pattern.compile("^val.*buildScript.*\\{")
|
||||||
val BLOCK_EXTRACTOR = BlockExtractor(BUILD_SCRIPT_REGEXP, '{', '}')
|
val BLOCK_EXTRACTOR = BlockExtractor(BUILD_SCRIPT_REGEXP, '{', '}')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The content root for a build file module.
|
||||||
|
*/
|
||||||
|
fun buildContentRoot(root: String) = root + File.separatorChar + "kobalt"
|
||||||
}
|
}
|
||||||
|
|
||||||
fun parseBuildScriptInfos(projectDir: String, context: KobaltContext, profiles: Profiles)
|
fun parseBuildScriptInfos(projectDir: String, context: KobaltContext, profiles: Profiles)
|
||||||
|
@ -219,7 +225,7 @@ class BuildFiles @Inject constructor(val factory: BuildFileCompiler.IFactory,
|
||||||
return analyzedFiles
|
return analyzedFiles
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun sourceDir(root: String) = File(KFiles.joinDir(root, "kobalt", "src"))
|
private fun sourceDir(root: String) = File(KFiles.joinDir(buildContentRoot(root), "src"))
|
||||||
|
|
||||||
private fun findFiles(file: File, accept: (File) -> Boolean) : List<File> {
|
private fun findFiles(file: File, accept: (File) -> Boolean) : List<File> {
|
||||||
val result = arrayListOf<File>()
|
val result = arrayListOf<File>()
|
||||||
|
@ -236,6 +242,7 @@ class BuildFiles @Inject constructor(val factory: BuildFileCompiler.IFactory,
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun findBuildSourceFiles(root: String) : List<File> {
|
private fun findBuildSourceFiles(root: String) : List<File> {
|
||||||
val result = arrayListOf<File>()
|
val result = arrayListOf<File>()
|
||||||
|
|
||||||
|
|
|
@ -40,8 +40,9 @@ class GetDependencyGraphHandler : WebSocketListener {
|
||||||
|
|
||||||
fun <T> sendWebsocketCommand(endpoint: RemoteEndpoint, commandName: String, payload: T,
|
fun <T> sendWebsocketCommand(endpoint: RemoteEndpoint, commandName: String, payload: T,
|
||||||
errorMessage: String? = null) {
|
errorMessage: String? = null) {
|
||||||
endpoint.sendString(Gson().toJson(WebSocketCommand(commandName, payload = Gson().toJson(payload),
|
val json = Gson().toJson(WebSocketCommand(commandName, payload = Gson().toJson(payload),
|
||||||
errorMessage = errorMessage)))
|
errorMessage = errorMessage))
|
||||||
|
endpoint.sendString(json)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun findProfiles(map: Map<String, List<String>>) = map[PARAMETER_PROFILES]?.getOrNull(0)
|
private fun findProfiles(map: Map<String, List<String>>) = map[PARAMETER_PROFILES]?.getOrNull(0)
|
||||||
|
@ -91,9 +92,9 @@ class GetDependencyGraphHandler : WebSocketListener {
|
||||||
args.buildFile = buildSources.root.absolutePath
|
args.buildFile = buildSources.root.absolutePath
|
||||||
args.profiles = profiles
|
args.profiles = profiles
|
||||||
|
|
||||||
val allProjects = projectFinder.initForBuildFile(buildSources, args)
|
val projectResults = projectFinder.initForBuildFile(buildSources, args)
|
||||||
|
|
||||||
dependencyData.dependenciesDataFor(buildSources, args, object : IProgressListener {
|
dependencyData.dependenciesDataFor(buildSources, args, projectResults, object : IProgressListener {
|
||||||
override fun onProgress(progress: Int?, message: String?) {
|
override fun onProgress(progress: Int?, message: String?) {
|
||||||
sendWebsocketCommand(s.remote, ProgressCommand.NAME, ProgressCommand(progress, message))
|
sendWebsocketCommand(s.remote, ProgressCommand.NAME, ProgressCommand(progress, message))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,5 @@
|
||||||
package com.beust.kobalt.app.remote
|
package com.beust.kobalt.app.remote
|
||||||
|
|
||||||
import com.beust.kobalt.Args
|
|
||||||
import com.beust.kobalt.api.Kobalt
|
|
||||||
import com.beust.kobalt.app.MainModule
|
|
||||||
import com.beust.kobalt.homeDir
|
|
||||||
import com.beust.kobalt.internal.KobaltSettings
|
|
||||||
import com.beust.kobalt.internal.build.BuildSources
|
|
||||||
import com.google.gson.Gson
|
|
||||||
import java.io.File
|
|
||||||
|
|
||||||
//enum class Command(val n: Int, val command: ICommand) {
|
//enum class Command(val n: Int, val command: ICommand) {
|
||||||
// GET_DEPENDENCIES(1, Kobalt.INJECTOR.getInstance(GetDependenciesCommand::class.java)),
|
// GET_DEPENDENCIES(1, Kobalt.INJECTOR.getInstance(GetDependenciesCommand::class.java)),
|
||||||
// GET_DEPENDENCIES_GRAPH(2, Kobalt.INJECTOR.getInstance(GetDependenciesGraphCommand::class.java));
|
// GET_DEPENDENCIES_GRAPH(2, Kobalt.INJECTOR.getInstance(GetDependenciesGraphCommand::class.java));
|
||||||
|
@ -18,29 +9,29 @@ import java.io.File
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
class KobaltHub(val dependencyData: RemoteDependencyData) {
|
//class KobaltHub(val dependencyData: RemoteDependencyData) {
|
||||||
val args = Args()
|
// val args = Args()
|
||||||
|
//
|
||||||
fun runCommand(n: Int) : String {
|
// fun runCommand(n: Int) : String {
|
||||||
val buildSources = BuildSources(File(homeDir("kotlin/klaxon")))
|
// val buildSources = BuildSources(File(homeDir("kotlin/klaxon")))
|
||||||
val data =
|
// val data =
|
||||||
when(n) {
|
// when(n) {
|
||||||
1 -> Gson().toJson(
|
// 1 -> Gson().toJson(
|
||||||
dependencyData.dependenciesDataFor(buildSources, args))
|
// dependencyData.dependenciesDataFor(buildSources, args))
|
||||||
2 -> Gson().toJson(
|
// 2 -> Gson().toJson(
|
||||||
dependencyData.dependenciesDataFor(buildSources, args,
|
// dependencyData.dependenciesDataFor(buildSources, args,
|
||||||
useGraph = true))
|
// useGraph = true))
|
||||||
else -> throw RuntimeException("Unknown command")
|
// else -> throw RuntimeException("Unknown command")
|
||||||
}
|
// }
|
||||||
println("Data: $data")
|
// println("Data: $data")
|
||||||
return data
|
// return data
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
fun main(argv: Array<String>) {
|
//fun main(argv: Array<String>) {
|
||||||
Kobalt.init(MainModule(Args(), KobaltSettings.readSettingsXml()))
|
// Kobalt.init(MainModule(Args(), KobaltSettings.readSettingsXml()))
|
||||||
val dependencyData = Kobalt.INJECTOR.getInstance(RemoteDependencyData::class.java)
|
// val dependencyData = Kobalt.INJECTOR.getInstance(RemoteDependencyData::class.java)
|
||||||
val json = KobaltHub(dependencyData).runCommand(1)
|
// val json = KobaltHub(dependencyData).runCommand(1)
|
||||||
val dd = Gson().fromJson(json, RemoteDependencyData.GetDependenciesData::class.java)
|
// val dd = Gson().fromJson(json, RemoteDependencyData.GetDependenciesData::class.java)
|
||||||
println("Data2: $dd")
|
// println("Data2: $dd")
|
||||||
}
|
//}
|
||||||
|
|
|
@ -4,10 +4,16 @@ import com.beust.kobalt.Args
|
||||||
import com.beust.kobalt.api.IClasspathDependency
|
import com.beust.kobalt.api.IClasspathDependency
|
||||||
import com.beust.kobalt.api.Project
|
import com.beust.kobalt.api.Project
|
||||||
import com.beust.kobalt.app.BuildFileCompiler
|
import com.beust.kobalt.app.BuildFileCompiler
|
||||||
import com.beust.kobalt.internal.*
|
import com.beust.kobalt.internal.DynamicGraph
|
||||||
|
import com.beust.kobalt.internal.GraphUtil
|
||||||
|
import com.beust.kobalt.internal.PluginInfo
|
||||||
|
import com.beust.kobalt.internal.TaskManager
|
||||||
import com.beust.kobalt.internal.build.BuildSources
|
import com.beust.kobalt.internal.build.BuildSources
|
||||||
import com.beust.kobalt.maven.DependencyManager
|
import com.beust.kobalt.maven.DependencyManager
|
||||||
import com.beust.kobalt.misc.*
|
import com.beust.kobalt.misc.KFiles
|
||||||
|
import com.beust.kobalt.misc.KobaltExecutors
|
||||||
|
import com.beust.kobalt.misc.StringVersion
|
||||||
|
import com.beust.kobalt.misc.log
|
||||||
import com.google.inject.Inject
|
import com.google.inject.Inject
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
@ -22,7 +28,9 @@ class RemoteDependencyData @Inject constructor(val executors: KobaltExecutors, v
|
||||||
val buildFileCompilerFactory: BuildFileCompiler.IFactory, val pluginInfo: PluginInfo,
|
val buildFileCompilerFactory: BuildFileCompiler.IFactory, val pluginInfo: PluginInfo,
|
||||||
val taskManager: TaskManager) {
|
val taskManager: TaskManager) {
|
||||||
|
|
||||||
fun dependenciesDataFor(buildSources: BuildSources, args: Args, progressListener: IProgressListener? = null,
|
fun dependenciesDataFor(buildSources: BuildSources, args: Args,
|
||||||
|
findProjectResult: BuildFileCompiler.FindProjectResult,
|
||||||
|
progressListener: IProgressListener? = null,
|
||||||
useGraph : Boolean = false): GetDependenciesData {
|
useGraph : Boolean = false): GetDependenciesData {
|
||||||
val projectDatas = arrayListOf<ProjectData>()
|
val projectDatas = arrayListOf<ProjectData>()
|
||||||
|
|
||||||
|
@ -168,7 +176,7 @@ class RemoteDependencyData @Inject constructor(val executors: KobaltExecutors, v
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return GetDependenciesData(projectDatas, allTasks, pluginDependencies,
|
return GetDependenciesData(projectDatas, allTasks, pluginDependencies, findProjectResult.buildContentRoots,
|
||||||
projectResult.taskResult.errorMessage)
|
projectResult.taskResult.errorMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,6 +202,7 @@ class RemoteDependencyData @Inject constructor(val executors: KobaltExecutors, v
|
||||||
class GetDependenciesData(val projects: List<ProjectData> = emptyList(),
|
class GetDependenciesData(val projects: List<ProjectData> = emptyList(),
|
||||||
val allTasks: Collection<TaskData> = emptySet(),
|
val allTasks: Collection<TaskData> = emptySet(),
|
||||||
val pluginDependencies: List<DependencyData> = emptyList(),
|
val pluginDependencies: List<DependencyData> = emptyList(),
|
||||||
|
val buildContentRoots: List<String> = emptyList(),
|
||||||
val errorMessage: String?) {
|
val errorMessage: String?) {
|
||||||
companion object {
|
companion object {
|
||||||
val NAME = "GetDependencies"
|
val NAME = "GetDependencies"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue