1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-27 00:38:11 -07:00

Better logging.

This commit is contained in:
Cedric Beust 2015-12-11 01:50:38 +04:00
parent 2ef4a4e3e9
commit cd541f34cf
3 changed files with 110 additions and 85 deletions

View file

@ -59,12 +59,12 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null,
// // The ordering of files is: 1) build type 2) product flavor 3) default // // The ordering of files is: 1) build type 2) product flavor 3) default
buildType.let { buildType.let {
val dir = File(KFiles.joinDir("src", it.name, project.projectInfo.sourceDirectory)) val dir = File(KFiles.joinDir("src", it.name, project.projectInfo.sourceDirectory))
log(2, "Adding source for build type ${it.name}: ${dir.path}") log(3, "Adding source for build type ${it.name}: ${dir.path}")
result.add(dir) result.add(dir)
} }
productFlavor.let { productFlavor.let {
val dir = File(KFiles.joinDir("src", it.name, project.projectInfo.sourceDirectory)) val dir = File(KFiles.joinDir("src", it.name, project.projectInfo.sourceDirectory))
log(2, "Adding source for product flavor ${it.name}: ${dir.path}") log(3, "Adding source for product flavor ${it.name}: ${dir.path}")
result.add(dir) result.add(dir)
} }

View file

@ -11,6 +11,16 @@ fun Any.log(level: Int, text: String, newLine : Boolean = true) {
} }
} }
fun Any.logWrap(level: Int, text1: String, text2: String, function: () -> Unit) {
if (level <= KobaltLogger.LOG_LEVEL) {
KobaltLogger.logger.log(javaClass.simpleName, text1, newLine = false)
}
function()
if (level <= KobaltLogger.LOG_LEVEL) {
KobaltLogger.logger.log(javaClass.simpleName, text2, newLine = true)
}
}
fun Any.debug(text: String) { fun Any.debug(text: String) {
KobaltLogger.logger.debug(javaClass.simpleName, text) KobaltLogger.logger.debug(javaClass.simpleName, text)
} }

View file

@ -23,7 +23,9 @@ import com.beust.kobalt.api.IClasspathDependency
import com.beust.kobalt.api.Project import com.beust.kobalt.api.Project
import com.beust.kobalt.maven.dependency.MavenDependency import com.beust.kobalt.maven.dependency.MavenDependency
import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.KFiles
import com.beust.kobalt.misc.KobaltLogger
import com.beust.kobalt.misc.log import com.beust.kobalt.misc.log
import com.beust.kobalt.misc.logWrap
import java.io.File import java.io.File
class KobaltProcessResult : ProcessResult { class KobaltProcessResult : ProcessResult {
@ -50,7 +52,7 @@ class KobaltJavaProcessExecutor : JavaProcessExecutor {
class KobaltProcessOutputHandler : BaseProcessOutputHandler() { class KobaltProcessOutputHandler : BaseProcessOutputHandler() {
override fun handleOutput(processOutput: ProcessOutput) = override fun handleOutput(processOutput: ProcessOutput) =
log(1, "AndroidBuild output" + processOutput.standardOutput) log(3, "AndroidBuild output" + processOutput.standardOutput)
} }
class KobaltErrorReporter : ErrorReporter(ErrorReporter.EvaluationMode.STANDARD) { class KobaltErrorReporter : ErrorReporter(ErrorReporter.EvaluationMode.STANDARD) {
@ -72,7 +74,12 @@ class ProjectLayout {
class KobaltResourceMerger { class KobaltResourceMerger {
fun run(project: Project, variant: Variant, config: AndroidConfig, aarDependencies: List<File>, fun run(project: Project, variant: Variant, config: AndroidConfig, aarDependencies: List<File>,
rDirectory: String) { rDirectory: String) {
val logger = StdLogger(StdLogger.Level.VERBOSE) val level = when(KobaltLogger.LOG_LEVEL) {
3 -> StdLogger.Level.VERBOSE
2 -> StdLogger.Level.WARNING
else -> StdLogger.Level.ERROR
}
val logger = StdLogger(level)
val androidBuilder = createAndroidBuilder(project, config, logger) val androidBuilder = createAndroidBuilder(project, config, logger)
// //
@ -144,6 +151,7 @@ class KobaltResourceMerger {
private fun processAssets(project: Project, variant: Variant, androidBuilder: AndroidBuilder, private fun processAssets(project: Project, variant: Variant, androidBuilder: AndroidBuilder,
aarDependencies: List<File>) { aarDependencies: List<File>) {
logWrap(2, " Processing assets...", "done") {
val intermediates = File( val intermediates = File(
KFiles.joinDir(AndroidFiles.intermediates(project), "assets", variant.toIntermediateDir())) KFiles.joinDir(AndroidFiles.intermediates(project), "assets", variant.toIntermediateDir()))
aarDependencies.forEach { aarDependencies.forEach {
@ -153,9 +161,11 @@ class KobaltResourceMerger {
} }
} }
} }
}
private fun processManifests(project: Project, variant: Variant, androidBuilder: AndroidBuilder, private fun processManifests(project: Project, variant: Variant, androidBuilder: AndroidBuilder,
config: AndroidConfig) { config: AndroidConfig) {
logWrap(2, " Processing manifests...", "done") {
val manifestOverlays = variant.allDirectories(project).map { val manifestOverlays = variant.allDirectories(project).map {
File("src/$it/AndroidManifest.xml") File("src/$it/AndroidManifest.xml")
}.filter { }.filter {
@ -181,20 +191,22 @@ class KobaltResourceMerger {
emptyMap() /* placeHolders */, emptyMap() /* placeHolders */,
reportFile) reportFile)
} }
}
private fun processResources(project: Project, variant: Variant, androidBuilder: AndroidBuilder, private fun processResources(project: Project, variant: Variant, androidBuilder: AndroidBuilder,
aarDependencies: List<File>, logger: ILogger, processOutputHandler: KobaltProcessOutputHandler) { aarDependencies: List<File>, logger: ILogger, processOutputHandler: KobaltProcessOutputHandler) {
logWrap(2, " Processing resources...", "done") {
val layout = ProjectLayout() val layout = ProjectLayout()
val preprocessor = NoOpResourcePreprocessor() val preprocessor = NoOpResourcePreprocessor()
val outputDir = AndroidFiles.mergedResources(project, variant) val outputDir = AndroidFiles.mergedResources(project, variant)
val resourceMerger = ResourceMerger() val resourceMerger = ResourceMerger()
val fullVariantDir = File(variant.toCamelcaseDir()) val fullVariantDir = File(variant.toCamelcaseDir())
val srcList = listOf("main", variant.productFlavor.name, variant.buildType.name, fullVariantDir.path) val srcList = listOf("main", variant.productFlavor.name, variant.buildType.name, fullVariantDir.path)
.map { "src" + File.separator + it} .map { "src" + File.separator + it }
// TODO: figure out why the badSrcList is bad. All this information should be coming from the Variant // TODO: figure out why the badSrcList is bad. All this information should be coming from the Variant
val badSrcList = variant.resDirectories(project).map { it.path } val badSrcList = variant.resDirectories(project).map { it.path }
val goodAarList = aarDependencies.map { it.path + File.separator} val goodAarList = aarDependencies.map { it.path + File.separator }
(goodAarList + srcList).map { it + File.separator + "res" }.forEach { path -> (goodAarList + srcList).map { it + File.separator + "res" }.forEach { path ->
with(ResourceSet(path)) { with(ResourceSet(path)) {
addSource(File(path)) addSource(File(path))
@ -213,10 +225,13 @@ class KobaltResourceMerger {
preprocessor) preprocessor)
resourceMerger.mergeData(writer, true) resourceMerger.mergeData(writer, true)
} }
}
private fun mergeResources(project: Project, variant: Variant, androidBuilder: AndroidBuilder, private fun mergeResources(project: Project, variant: Variant, androidBuilder: AndroidBuilder,
aarDependencies: List<File>, rDirectory: String, aarDependencies: List<File>, rDirectory: String,
processOutputHandler: KobaltProcessOutputHandler) { processOutputHandler: KobaltProcessOutputHandler) {
logWrap(2, " Merging resources...", "done") {
val aaptOptions = object : AaptOptions { val aaptOptions = object : AaptOptions {
override fun getAdditionalParameters() = emptyList<String>() override fun getAdditionalParameters() = emptyList<String>()
override fun getFailOnMissingConfigEntry() = false override fun getFailOnMissingConfigEntry() = false
@ -227,7 +242,7 @@ class KobaltResourceMerger {
val aaptCommand = AaptPackageProcessBuilder(File(AndroidFiles.mergedManifest(project, variant)), val aaptCommand = AaptPackageProcessBuilder(File(AndroidFiles.mergedManifest(project, variant)),
aaptOptions) aaptOptions)
fun toSymbolFileProvider(aarDirectory: File) = object: SymbolFileProvider { fun toSymbolFileProvider(aarDirectory: File) = object : SymbolFileProvider {
override fun getManifest() = File(aarDirectory, "AndroidManifest.xml") override fun getManifest() = File(aarDirectory, "AndroidManifest.xml")
override fun isOptional() = false override fun isOptional() = false
override fun getSymbolFile() = File(aarDirectory, "R.txt") override fun getSymbolFile() = File(aarDirectory, "R.txt")
@ -253,7 +268,7 @@ class KobaltResourceMerger {
} }
androidBuilder.processResources(aaptCommand, true, processOutputHandler) androidBuilder.processResources(aaptCommand, true, processOutputHandler)
}
} }
fun dex(project: Project) { fun dex(project: Project) {