mirror of
https://github.com/revanced/revanced-cli.git
synced 2025-04-30 06:34:29 +02:00
feat: add options command
This commit is contained in:
parent
32da961d57
commit
9edbbf3163
@ -40,13 +40,21 @@ Learn how to ReVanced CLI.
|
|||||||
revanced-patches.jar
|
revanced-patches.jar
|
||||||
```
|
```
|
||||||
|
|
||||||
- ### ⚙️ Supply options to patches using ReVanced CLI
|
- ### ⚙️ Generate options from patches using ReVanced CLI
|
||||||
|
|
||||||
Some patches provide options. Currently, ReVanced CLI will generate and consume an `options.json` file at the location that is specified in `-o`. If the option is not specified, the options file will be generated in the current working directory.
|
Some patches accept options.
|
||||||
|
|
||||||
The options file contains all options from supplied patch bundles.
|
- ```bash
|
||||||
|
java -jar revanced-cli.jar options \
|
||||||
|
--overwrite \
|
||||||
|
--update \
|
||||||
|
revanced-patches.jar
|
||||||
|
```
|
||||||
|
|
||||||
> **Note**: The `options.json` file will be generated at the first time you use ReVanced CLI to patch an APK file for now. This will be changed in the future.
|
> **Note**: A default `options.json` file will be automatically generated, if it does not exist
|
||||||
|
without any need of intervention.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
|
||||||
- ### 💉 Use ReVanced CLI to patch an APK file but install without root permissions
|
- ### 💉 Use ReVanced CLI to patch an APK file but install without root permissions
|
||||||
|
|
||||||
|
@ -33,7 +33,8 @@ object CLIVersionProvider : IVersionProvider {
|
|||||||
subcommands = [
|
subcommands = [
|
||||||
ListPatchesCommand::class,
|
ListPatchesCommand::class,
|
||||||
PatchCommand::class,
|
PatchCommand::class,
|
||||||
UninstallCommand::class
|
UninstallCommand::class,
|
||||||
|
OptionsCommand::class,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
internal object Main
|
internal object Main
|
50
src/main/kotlin/app/revanced/cli/command/OptionsCommand.kt
Normal file
50
src/main/kotlin/app/revanced/cli/command/OptionsCommand.kt
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
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")
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user