Create ScriptsInitializer PoC
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package com.bartlomiejpluta.ttsserver.initializer
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import com.bartlomiejpluta.R
|
||||
import java.io.BufferedInputStream
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
|
||||
class ScriptsInitializer(private val context: Context, private val preferences: SharedPreferences) {
|
||||
private val endpointsDirectory: File?
|
||||
get() = context.getExternalFilesDir("endpoints")
|
||||
|
||||
private val configDirectory: File?
|
||||
get() = context.getExternalFilesDir("config")
|
||||
|
||||
fun initializeOnce() {
|
||||
if(!preferences.getBoolean(INITIALIZED_FLAG, false)) {
|
||||
initialize()
|
||||
|
||||
preferences.edit().apply {
|
||||
putBoolean(INITIALIZED_FLAG, true)
|
||||
apply()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun initialize() {
|
||||
endpointsDirectory?.listFiles()?.forEach { it.delete() }
|
||||
configDirectory?.listFiles()?.forEach { it.delete() }
|
||||
initializeConfig()
|
||||
initializeEndpoints()
|
||||
}
|
||||
|
||||
private fun initializeConfig() =
|
||||
saveToFile("config.lua", configDirectory, R.raw.config)
|
||||
|
||||
private fun initializeEndpoints() =
|
||||
endpoints.forEach { saveToFile(it.key, endpointsDirectory, it.value) }
|
||||
|
||||
private fun saveToFile(fileName: String, directory: File?, resourceId: Int) {
|
||||
BufferedInputStream(context.resources.openRawResource(resourceId)).use { input ->
|
||||
FileOutputStream(File(directory, fileName)).use { output ->
|
||||
input.copyTo(output)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val INITIALIZED_FLAG = "flag_initialized"
|
||||
private val endpoints = mapOf(
|
||||
"say.lua" to R.raw.say
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user