■ ■ ■ ■ ■ ■ ■
jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java
| skipped 15 lines |
16 | 16 | | import jadx.api.JadxArgs.RenameEnum; |
17 | 17 | | import jadx.api.JadxArgs.UseKotlinMethodsForVarNames; |
18 | 18 | | import jadx.api.JadxDecompiler; |
| 19 | + | import jadx.api.args.DeobfuscationMapFileMode; |
19 | 20 | | import jadx.core.utils.exceptions.JadxException; |
20 | 21 | | import jadx.core.utils.files.FileUtils; |
21 | 22 | | |
| skipped 71 lines |
93 | 94 | | ) |
94 | 95 | | protected String deobfuscationMapFile; |
95 | 96 | | |
96 | | - | @Parameter(names = { "--deobf-rewrite-cfg" }, description = "force to ignore and overwrite deobfuscation map file") |
| 97 | + | @Parameter( |
| 98 | + | names = { "--deobf-cfg-file-mode" }, |
| 99 | + | description = "set mode for handle deobfuscation map file:" |
| 100 | + | + "\n 'read' - read if found, don't save (default)" |
| 101 | + | + "\n 'read-or-save' - read if found, save otherwise (don't overwrite)" |
| 102 | + | + "\n 'overwrite' - don't read, always save" |
| 103 | + | + "\n 'ignore' - don't read and don't save", |
| 104 | + | converter = DeobfuscationMapFileModeConverter.class |
| 105 | + | ) |
| 106 | + | protected DeobfuscationMapFileMode deobfuscationMapFileMode = DeobfuscationMapFileMode.READ; |
| 107 | + | |
| 108 | + | @Parameter(names = { "--deobf-rewrite-cfg" }, description = "set '--deobf-cfg-file-mode' to 'overwrite' (deprecated)") |
97 | 109 | | protected boolean deobfuscationForceSave = false; |
98 | 110 | | |
99 | 111 | | @Parameter(names = { "--deobf-use-sourcename" }, description = "use source file name as class name alias") |
| skipped 126 lines |
226 | 238 | | args.setReplaceConsts(replaceConsts); |
227 | 239 | | args.setDeobfuscationOn(deobfuscationOn); |
228 | 240 | | args.setDeobfuscationMapFile(FileUtils.toFile(deobfuscationMapFile)); |
229 | | - | args.setDeobfuscationForceSave(deobfuscationForceSave); |
| 241 | + | if (deobfuscationForceSave) { |
| 242 | + | args.setDeobfuscationMapFileMode(DeobfuscationMapFileMode.OVERWRITE); |
| 243 | + | } else { |
| 244 | + | args.setDeobfuscationMapFileMode(deobfuscationMapFileMode); |
| 245 | + | } |
230 | 246 | | args.setDeobfuscationMinLength(deobfuscationMinLength); |
231 | 247 | | args.setDeobfuscationMaxLength(deobfuscationMaxLength); |
232 | 248 | | args.setUseSourceNameAsClassAlias(deobfuscationUseSourceNameAsAlias); |
| skipped 88 lines |
321 | 337 | | |
322 | 338 | | public String getDeobfuscationMapFile() { |
323 | 339 | | return deobfuscationMapFile; |
| 340 | + | } |
| 341 | + | |
| 342 | + | public DeobfuscationMapFileMode getDeobfuscationMapFileMode() { |
| 343 | + | return deobfuscationMapFileMode; |
324 | 344 | | } |
325 | 345 | | |
326 | 346 | | public boolean isDeobfuscationForceSave() { |
| skipped 107 lines |
434 | 454 | | throw new IllegalArgumentException( |
435 | 455 | | '\'' + value + "' is unknown, possible values are: " |
436 | 456 | | + JadxCLIArgs.enumValuesString(CommentsLevel.values())); |
| 457 | + | } |
| 458 | + | } |
| 459 | + | } |
| 460 | + | |
| 461 | + | public static class DeobfuscationMapFileModeConverter implements IStringConverter<DeobfuscationMapFileMode> { |
| 462 | + | @Override |
| 463 | + | public DeobfuscationMapFileMode convert(String value) { |
| 464 | + | try { |
| 465 | + | return DeobfuscationMapFileMode.valueOf(value.toUpperCase()); |
| 466 | + | } catch (Exception e) { |
| 467 | + | throw new IllegalArgumentException( |
| 468 | + | '\'' + value + "' is unknown, possible values are: " |
| 469 | + | + JadxCLIArgs.enumValuesString(DeobfuscationMapFileMode.values())); |
437 | 470 | | } |
438 | 471 | | } |
439 | 472 | | } |
| skipped 8 lines |