Whyfi-eSIM/buildSrc/src/main/kotlin/im/angry/openeuicc/build/Magisk.kt
septs 7e1c4907bb style: reformat all files (#268)
Reviewed-on: PeterCxy/OpenEUICC#268
Co-authored-by: septs <github@septs.pw>
Co-committed-by: septs <github@septs.pw>
2025-12-02 04:13:18 +01:00

74 lines
2.4 KiB
Kotlin

package im.angry.openeuicc.build
import org.gradle.api.DefaultTask
import org.gradle.api.provider.MapProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputDirectory
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import java.io.File
abstract class MagiskModuleDirTask : DefaultTask() {
@get:Input
abstract val variant: Property<String>
@get:Input
abstract val appName: Property<String>
@get:InputFile
abstract val permsFile: Property<File>
@get:InputFile
abstract val moduleInstaller: Property<File>
@get:Input
abstract val moduleCustomizeScriptText: Property<String>
@get:Input
abstract val moduleUninstallScriptText: Property<String>
@get:Input
abstract val moduleProp: MapProperty<String, String>
@InputDirectory
val inputDir = variant.map { project.layout.buildDirectory.dir("outputs/apk/${it}") }
@OutputDirectory
val outputDir = variant.map { project.layout.buildDirectory.dir("magisk/${it}") }
@TaskAction
fun build() {
val dir = outputDir.get().get()
project.mkdir(dir)
val systemExtDir = dir.dir("system/system_ext")
val permDir = dir.dir("system/system_ext/etc/permissions")
val appDir = systemExtDir.dir("priv-app/${appName.get()}")
val metaInfDir = dir.dir("META-INF/com/google/android")
project.mkdir(systemExtDir)
project.mkdir(metaInfDir)
project.mkdir(appDir)
project.mkdir(permDir)
project.copy {
into(appDir)
from(inputDir) {
include("app-${variant.get()}.apk")
rename("app-${variant.get()}.apk", "${appName.get()}.apk")
}
}
project.copy {
from(permsFile)
into(permDir)
}
project.copy {
from(moduleInstaller)
into(metaInfDir)
rename(".*", "update-binary")
}
dir.file("customize.sh").asFile.writeText(moduleCustomizeScriptText.get())
dir.file("uninstall.sh").asFile.writeText(moduleUninstallScriptText.get())
metaInfDir.file("updater-script").asFile.writeText("#MAGISK\n")
dir.file("module.prop").asFile.writeText(moduleProp.get().map { (k, v) -> "$k=$v" }.joinToString("\n"))
}
}