Skip to content

Commit

Permalink
Env vars for AEMaaCS / osgi configs (#936)
Browse files Browse the repository at this point in the history
  • Loading branch information
krystian-panek-vmltech authored Nov 14, 2022
1 parent 6539c30 commit 6392633
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 5 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ dependencies {
detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.21.0")
testImplementation("org.junit.jupiter:junit-jupiter:5.8.2")

implementation("com.cognifide.gradle:common-plugin:1.1.11")
implementation("com.cognifide.gradle:common-plugin:1.1.14")

// External dependencies
implementation("org.jsoup:jsoup:1.14.3")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import com.cognifide.gradle.aem.common.instance.local.Script
import com.cognifide.gradle.aem.common.instance.local.Status
import com.cognifide.gradle.aem.common.instance.oak.OakRun
import com.cognifide.gradle.aem.common.instance.service.osgi.Bundle
import com.cognifide.gradle.aem.common.utils.FileUtil
import com.cognifide.gradle.common.utils.Formats
import com.cognifide.gradle.common.utils.using
import org.apache.commons.io.FileUtils
Expand Down Expand Up @@ -91,11 +92,24 @@ class LocalInstance(aem: AemExtension, name: String) : Instance(aem, name) {
val runModesString: String get() = (runModes.get() + listOf(purpose.name.lowercase()))
.filter { it.isNotBlank() }.joinToString(",")

val envFile get() = dir.resolve("env.properties")

val envVars = aem.obj.map<String, String> {
set(aem.obj.provider { FileUtil.readProperties(envFile) })
prop.map("envVars")?.let { putAll(it) }
}

fun envPass(vararg patterns: String) = envPass(patterns.asIterable())

fun envPass(patterns: Iterable<String>) {
envVars.putAll(aem.obj.provider { System.getenv().filterKeys { common.patterns.wildcard(it, patterns) } })
}

val dir: File get() = aem.localInstanceManager.instanceDir.get().asFile.resolve(purposeId)

val controlDir: File get() = dir.resolve("control")

val overridesDirs: List<File> get() = localManager.overrideDir.get().asFile.run { listOf(resolve("common"), resolve(purposeId)) }
val overridesDirs: List<File> get() = localManager.overrideDirs.get().flatMap { listOf(it.resolve("common"), it.resolve(purposeId)) }

val jar: File? get() = quickstartDir.resolve("app").takeIf { it.exists() }?.listFiles(FileFilter { it.extension == "jar" })?.firstOrNull()

Expand Down Expand Up @@ -304,6 +318,7 @@ class LocalInstance(aem: AemExtension, name: String) : Instance(aem, name) {

private fun copyOverrideFiles() {
overridesDirs.filter { it.exists() }.forEach {
logger.info("Copying override files from '$it' to '$dir'")
FileUtils.copyDirectory(it, dir)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,9 @@ class LocalInstanceManager(internal val aem: AemExtension) : Serializable {
* Path from which e.g extra files for local AEM instances will be copied.
* Useful for overriding default startup scripts ('start.bat' or 'start.sh') or providing some files inside 'crx-quickstart'.
*/
val overrideDir = aem.obj.dir {
convention(configDir.dir("override"))
aem.prop.file("localInstance.overrideDir")?.let { set(it) }
val overrideDirs = aem.obj.list<File> {
set(project.provider { listOf(configDir.dir("override").get().asFile, rootDir.dir("override").get().asFile) })
aem.prop.list("localInstance.overrideDirs")?.let { paths -> addAll(paths.map { project.file(it) }) }
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class Script(val instance: LocalInstance, val shellCommand: List<String>, val wr

ProcBuilder(command, *args.toTypedArray())
.withWorkingDirectory(instance.dir)
.withVars(instance.envVars.get())
.withExpectedExitStatuses(0)
.withInputStream(SafeStreams.emptyInput())
.withOutputStream(SafeStreams.systemOut())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import org.apache.commons.io.FilenameUtils
import org.apache.commons.io.input.ReversedLinesFileReader
import java.io.File
import java.nio.charset.StandardCharsets
import java.util.*

object FileUtil {

Expand All @@ -22,4 +23,9 @@ object FileUtil {
fun readLastLines(file: File, count: Int): List<String> {
return ReversedLinesFileReader(file, StandardCharsets.UTF_8).readLines(count)
}

fun readProperties(file: File) = when {
file.exists() -> Properties().apply { file.bufferedReader().use { load(it) } }.toMap().entries.associate { it.key.toString() to it.value.toString() }
else -> mapOf()
}
}

0 comments on commit 6392633

Please sign in to comment.