mirror of
https://github.com/revanced/revanced-cli.git
synced 2025-04-29 22:24:36 +02:00
50 lines
1.5 KiB
Kotlin
50 lines
1.5 KiB
Kotlin
package app.revanced.cli.command
|
|
|
|
import app.revanced.patcher.PatchBundleLoader
|
|
import app.revanced.utils.Options
|
|
import app.revanced.utils.Options.setOptions
|
|
import picocli.CommandLine
|
|
import picocli.CommandLine.Help.Visibility.ALWAYS
|
|
import java.io.File
|
|
|
|
@CommandLine.Command(
|
|
name = "options",
|
|
description = ["Generate options file from patches"],
|
|
)
|
|
internal object OptionsCommand : Runnable {
|
|
@CommandLine.Parameters(
|
|
description = ["Paths to patch bundles"],
|
|
arity = "1..*"
|
|
)
|
|
lateinit var patchBundles: Array<File>
|
|
|
|
@CommandLine.Option(
|
|
names = ["-p", "--path"],
|
|
description = ["Path to patch options JSON file"],
|
|
showDefaultValue = ALWAYS
|
|
)
|
|
var path: File = File("options.json")
|
|
|
|
@CommandLine.Option(
|
|
names = ["-o", "--overwrite"],
|
|
description = ["Overwrite existing options file"],
|
|
showDefaultValue = ALWAYS
|
|
)
|
|
var overwrite: Boolean = false
|
|
|
|
@CommandLine.Option(
|
|
names = ["-u", "--update"],
|
|
description = ["Update existing options by adding missing and removing non-existent options"],
|
|
showDefaultValue = ALWAYS
|
|
)
|
|
var update: Boolean = false
|
|
|
|
override fun run() = if (!path.exists() || overwrite)
|
|
with(PatchBundleLoader.Jar(*patchBundles)) {
|
|
if (update) setOptions(path, logger)
|
|
|
|
Options.serialize(this, prettyPrint = true)
|
|
.let(path::writeText)
|
|
}
|
|
else logger.error("Options file already exists, use --override to override it")
|
|
} |