we have to do this as part of a compiler plugin, and not by just looking
at the classes' bytecode, because jls§13.1 requires inlining of certain
constant values, so references to these will not be present in the
bytecode.
We can't do a real shallow clone since GitHub doesn't let you fetch
arbitrary commits. Instead we fetch the whole commit graph, but not the
file trees or file blobs, which are fetched by git checkout on-demand.
This lets us have better control over which dependencies are verified,
as changes to runelite-client's dependencies cause all Hub plugins with
pinned deps to fail, as the new transitive deps aren't pinned. Moving
this file into this repo not only lets us update it in these situations,
but also means individual plugin authors don't need to touch Gradle's
verification and all of it's associated pains. This also allows plugins
to pull a dependency that another plugin pulls already with no extra
work.
not using bash gives us more flexibility and significantly reduces build
times via parallelism. Additionally this includes support for GitHub
Actions which also significantly reduces build times.