Skip to content

Commit b9a8aae

Browse files
committed
locating files
1 parent d60d6c3 commit b9a8aae

File tree

6 files changed

+83
-30
lines changed

6 files changed

+83
-30
lines changed
Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,9 @@
11
package components
22

3-
import groovy.json.StringEscapeUtils
4-
import models.Configuration
5-
import models.Extension
6-
import org.gradle.api.NamedDomainObjectContainer
7-
import org.gradle.api.Project
83
import org.slf4j.Logger
94
import org.slf4j.LoggerFactory
105
import java.io.IOException
116

12-
fun Project.absolutePath(): String = this.file(wrapperOsX).absolutePath.replace(wrapperOsX, emptyChar)
13-
fun Project.createExtension(): Extension = this.extensions.create(extensionName, Extension::class.java)
14-
fun Project.createConfiguration(): NamedDomainObjectContainer<Configuration> =
15-
this.container<Configuration>(Configuration::class.java)
16-
17-
fun Process.outputString() = this.inputStream.bufferedReader().use { it.readText() }
18-
197
fun executeWith(runtime: Runtime, command: String): String = execute(runtime, command)
208

219
fun execute(command: String): String = execute(Runtime.getRuntime(), command)
@@ -38,12 +26,3 @@ fun <R : Any> R.logger(): Lazy<Logger> {
3826
return lazy { LoggerFactory.getLogger(this.javaClass) }
3927
}
4028

41-
fun String.runCommand(runner: (command: String, result: String) -> Unit = { _, _ -> }): String {
42-
val result = execute(this)
43-
runner(this, result)
44-
return result
45-
}
46-
47-
fun String.escape(): String = Regex.escape(this)
48-
fun String.unescape(): String = StringEscapeUtils.unescapeJava(this)
49-
fun String.removeNewLines(): String = this.replace("\n", "")
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package components
2+
3+
import groovy.json.StringEscapeUtils
4+
import models.Configuration
5+
import models.Extension
6+
import org.gradle.api.NamedDomainObjectContainer
7+
import org.gradle.api.Project
8+
import java.io.File
9+
10+
fun String.runCommand(runner: (command: String, result: String) -> Unit = { _, _ -> }): String {
11+
val result = execute(this)
12+
runner(this, result)
13+
return result
14+
}
15+
16+
fun String.escape(): String = Regex.escape(this)
17+
fun String.unescape(): String = StringEscapeUtils.unescapeJava(this)
18+
fun String.removeNewLines(): String = this.replace("\n", "")
19+
20+
fun File.validForConfiguration(configuration: Configuration): Boolean {
21+
var valid = false
22+
configuration.srcFolders.forEach { folder ->
23+
if (this.absolutePath.contains("/$folder/".replace("//", "/"))
24+
&& !this.absolutePath.contains("/$resourceBackup/")) {
25+
valid = true
26+
}
27+
}
28+
if (valid) {
29+
valid = false
30+
configuration.stringFiles.forEach { file ->
31+
if (this.absolutePath.contains("/$file".replace("//", "/"))) {
32+
valid = true
33+
}
34+
}
35+
}
36+
return valid
37+
}
38+
39+
fun Project.absolutePath(): String = this.file(wrapperWindows).absolutePath.replace(
40+
wrapperWindows,
41+
emptyChar
42+
)
43+
44+
fun Project.createExtension(): Extension = this.extensions.create(extensionName, Extension::class.java)
45+
fun Project.createConfiguration(): NamedDomainObjectContainer<Configuration> =
46+
this.container<Configuration>(Configuration::class.java)
47+
48+
fun Process.outputString() = this.inputStream.bufferedReader().use { it.readText() }
49+
50+
fun defaultConfig(): Configuration {
51+
return Configuration("app", listOf("strings.xml"), listOf("src${File.separator}main"))
52+
}

src/main/kotlin/components/Tasks.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ import models.Os
44
import models.getOs
55

66
internal fun signingReportTask(): String = "${when (getOs()) {
7-
Os.WINDOWS -> wrapperOsX
8-
Os.OSX -> wrapperWindows
7+
Os.WINDOWS -> wrapperWindows
8+
Os.OSX -> wrapperOsX
99
}} signingReport"

src/main/kotlin/components/Vars.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package components
22

3+
internal const val resourceBackup = "resbackup"
34
internal const val extensionName = "stringcare"
45
internal const val wrapperOsX = "./gradlew"
56
internal const val wrapperWindows = "gradlew.bat"

src/main/kotlin/components/XParser.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package components
2+
3+
import models.Configuration
4+
import java.io.File
5+
6+
fun locateFiles(projectPath: String, configuration: Configuration): List<File> = File(projectPath).walkTopDown()
7+
.filterIndexed { _, file ->
8+
file.validForConfiguration(configuration)
9+
}.toList()

src/test/kotlin/SCTest.kt

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
1+
import components.*
12
import models.extractFingerprint
23
import org.junit.Test
3-
import components.*
44

55

66
class SCTest {
77

88
private val logger by logger()
99

10-
private val signingReportTask = """
10+
private val prepareTask = """
1111
rm -rf KotlinSample &&
1212
git clone https://github.com/StringCare/KotlinSample.git &&
13-
cd KotlinSample &&
14-
echo "sdk.dir=/Users/efrainespada/Library/Android/sdk" > local.properties &&
15-
./gradlew signingReport
13+
cd KotlinSample
14+
""".trimIndent()
15+
16+
// gradlew task needs export ANDROID_SDK_ROOT=/Users/efrainespada/Library/Android/sdk
17+
// echo "sdk.dir=${System.getenv("ANDROID_SDK_ROOT")}" > local.properties &&
18+
private val signingReportTask = """
19+
$prepareTask &&
20+
${signingReportTask()}
1621
""".trimIndent()
1722

1823
@Test
@@ -32,9 +37,16 @@ class SCTest {
3237
@Test
3338
fun `fingerprint extraction`() {
3439
signingReportTask.runCommand { _, report ->
35-
val key = report.extractFingerprint()
36-
assert(key.split(":").size == 20)
40+
assert(report.extractFingerprint().split(":").size == 20)
3741
}
3842
}
3943

44+
@Test
45+
fun `locate string files for default configuration`() {
46+
prepareTask.runCommand { _, _ ->
47+
assert(locateFiles("KotlinSample", defaultConfig()).isNotEmpty())
48+
}
49+
50+
}
51+
4052
}

0 commit comments

Comments
 (0)