Commit Graph

853 Commits

Author SHA1 Message Date
6626014ef3 feat: add SafeClassWriter
the standard ClassWriter implementation uses the ClassLoader to find a common superclass. this won't work for us since we are not loading the JAR into the classpath. using this SafeClassWriter should fix that issue.
2022-06-05 08:02:46 +02:00
e6e468fbb5 fix: set marklimit to Integer.MAX_VALUE 2022-06-05 08:02:45 +02:00
2fabbdf71b chore(release): 1.0.0-dev.1 [skip ci]
# 1.0.0-dev.1 (2022-03-23)

### Bug Fixes

* avoid ignoring test resources (fixes [#1](https://github.com/ReVancedTeam/revanced-patcher/issues/1)) ([d5a3c76](d5a3c76389))
* current must be calculated after increment ([5f12bab](5f12bab5df))
* **gradle:** publish source and javadocs ([87bbde5](87bbde5e06))
* **Io:** fix finding classes by name ([460d62a](460d62a24c))
* **Io:** JAR loading and saving ([#8](https://github.com/ReVancedTeam/revanced-patcher/issues/8)) ([4d98cbc](4d98cbc9e8))
* nullable signature members ([#10](https://github.com/ReVancedTeam/revanced-patcher/issues/10)) ([8db8893](8db8893ab1))
* Patch should have access to the Cache ([6c0f082](6c0f0823c9))
* remove broken code ([0e72a6e](0e72a6e85f))
* set index for insertAt to 0 by default ([1769132](1769132a9e))
* workflow on dev branch ([7e67daf](7e67daf878))

### Code Refactoring

* convert Patch to abstract class ([23e897a](23e897a7a9))
* Optimize Signature class ([#11](https://github.com/ReVancedTeam/revanced-patcher/issues/11)) ([49beec9](49beec9fc6))
* Rename `net.revanced` to `app.revanced` ([3ab42a9](3ab42a932c))

### Features

* Add `findParentMethod` utility method ([#4](https://github.com/ReVancedTeam/revanced-patcher/issues/4)) ([00c6ab7](00c6ab7faf))

### BREAKING CHANGES

* Array<Int> was changed to IntArray. This breaks existing patches.
* Package name was changed from "net.revanced" to "app.revanced"
* Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
* Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
2022-06-05 08:02:45 +02:00
7faa001406 refactor: Optimize Signature class (#11)
BREAKING CHANGE: Array<Int> was changed to IntArray. This breaks existing patches.
2022-06-05 08:02:44 +02:00
70872307e3 refactor: Rename net.revanced to app.revanced
BREAKING CHANGE: Package name was changed from "net.revanced" to "app.revanced"
2022-06-05 08:02:44 +02:00
310a7c446b fix(Io): JAR loading and saving (#8)
* refactor: Complete rewrite of `Io`

* style: format code

* style: rewrite todos

* fix: use lateinit instead of nonnull assert for zipEntry

* fix: use lateinit instead of nonnull assert for jarEntry & reuse zipEntry

* docs: add docs to `Patcher`

* test: match output of patcher

* chore: add todo to `Io` for removing non-class files

Co-authored-by: Sculas <contact@sculas.xyz>
2022-06-05 08:02:43 +02:00
c236ebe078 fix(gradle): publish source and javadocs 2022-06-05 08:02:43 +02:00
674461f08d fix: nullable signature members (#10)
This commit will allow "partial" signatures, basically we will be allowed to exclude members to match for the signature
2022-06-05 08:02:43 +02:00
bbb2c547aa feat: Add findParentMethod utility method (#4)
* feat: Add `findParentMethod` utitly method

* refactor: add `resolveMethod` to `MethodResolver`

added some assertions and some tests

Co-authored-by: Lucaskyy <contact@sculas.xyz>
2022-06-05 08:02:42 +02:00
b957501e70 fix(Io): fix finding classes by name 2022-06-05 08:02:42 +02:00
b6ca31a970 chore: push IntelliJ project files 2022-06-05 08:02:42 +02:00
cbcf93f7d6 refactor: target java 8 instead of java 17 2022-06-05 08:02:41 +02:00
d5b4c99c00 fix: set index for insertAt to 0 by default 2022-06-05 08:02:41 +02:00
4dd820ffdf fix: Patch should have access to the Cache
BREAKING CHANGE: Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
2022-06-05 08:02:41 +02:00
cb9b1b9416 refactor: convert Patch to abstract class
BREAKING CHANGE: Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.
2022-06-05 08:02:40 +02:00
428f7f4dec fix: workflow on dev branch 2022-06-05 08:02:40 +02:00
77536cce8f style: remove tab 2022-06-05 08:02:39 +02:00
7b6a61b674 ci: add gradle-semantic-release-plugin and remove the github release assets 2022-06-05 08:02:39 +02:00
7f5f3b217d ci: add semantic-release 2022-06-05 08:02:39 +02:00
5ecbbfc954 chore: fix credentials for publishing 2022-03-20 20:32:17 +01:00
cd1baabe2e chore: publish package to GitHub Packages 2022-03-20 20:30:51 +01:00
b3762bd5c7 chore: move version to properties 2022-03-20 20:22:51 +01:00
6b1cec4a43 test: add test for multiple classes in jar 2022-03-20 19:05:24 +01:00
5f12bab5df fix: current must be calculated after increment 2022-03-20 16:57:33 +01:00
ec8115f3ac test: improve PatcherTest 2022-03-20 16:28:23 +01:00
0e72a6e85f fix: remove broken code
accidentally committed TestUtil in previous commit, this allows it to compile again
2022-03-20 15:57:05 +01:00
d5a3c76389 fix: avoid ignoring test resources (fixes #1) 2022-03-20 15:54:41 +01:00
ded2538605 Renamed Jar2ASM to Io due to reader & writer class 2022-03-20 03:19:13 +01:00
5d146c362f Improve example test testPatcher and increase caching speed 2022-03-20 03:06:23 +01:00
81e0220d15 License ReVanced Patcher under GPLv3 2022-03-20 00:16:53 +01:00
29f1595183 WIP Saving 2022-03-19 23:58:37 +01:00
57d5751b2c Add saveTo test 2022-03-19 23:33:17 +01:00
8c56d15823 Finish tests, add InsnList.setAt, sr -> sd
Added some sweet explanation too.
2022-03-19 23:15:20 +01:00
61c0541ef5 Add information about test data in PatcherTest 2022-03-19 23:01:10 +01:00
f45dd511f3 Cleanup 2022-03-19 22:53:30 +01:00
fc64bbc32a Minor things 2022-03-19 22:53:05 +01:00
e5f9a42ee6 Convert typed Object & Array types to Object types
Commit name is a bit superfluous, but it means that types such as "Ljava/lang/String;" get converted to "Ljava/lang/Object;". This is so we don't need to know the mappings, which are random in YT's code.

This is done in MethodResolver's "convertObject" and "convertObjects" for arrays.

Also changed ExtraTypes.ArrayAny to Object instead of String, that was a mistake. (which caused the test to pass at first)
2022-03-19 22:34:41 +01:00
f9327a2043 executePatches -> applyPatches, made logback a test dep 2022-03-19 21:58:31 +01:00
6bd4d80c47 Cache classes with their path & add ScanData for PatchData 2022-03-19 21:30:13 +01:00
ae5007ebd1 Fix tests (stupid mistake) & add logging 2022-03-19 19:47:12 +01:00
a9e7f19d51 Refactor Patcher 2022-03-19 18:35:41 +01:00
733fb6a3b8 Update .gitignore 2022-03-19 16:10:05 +01:00
6666c7a4b7 Add: MethodResolver, PatternScanner, SignatureLoader & Cache 2022-03-19 01:37:02 +01:00
be18b837ba Add Jar2ASM & loadJar method 2022-03-18 23:08:41 +01:00
d297a3dbf6 Adding more features to the patcher (unfinished) 2022-03-18 22:10:41 +01:00
7b40d53bd3 TIL CodeWithMe is ass! 2022-03-18 21:52:00 +01:00
fc41a84aa1 Add more templates 2022-03-18 20:57:14 +01:00
675c409a59 Rework patcher 2022-03-18 20:46:24 +01:00
76008acef6 Restructure patcher 2022-03-17 21:52:44 +01:00
8ab86312bf Refactor code, add YTVersion, ElementType and signatures for 17.03.38
"signatures" package will be moved to Signatures repository soon.
2022-03-17 20:04:06 +01:00