Commit Graph

106 Commits

Author SHA1 Message Date
Daniel Scalzi
2f679411b9 Fix OptiFine resolution for 1.13+. 2020-06-13 00:31:47 -04:00
Daniel Scalzi
ceb23f11a5 Attempt to perform a metadata inference on file names to account for mod author neglect. 2020-06-13 00:10:20 -04:00
Daniel Scalzi
a6b6ed9db3 Add distrometa.json for storing distribution wide metadata.
The distrometa.json file is stored at {ROOT}/meta/distrometa.json.
You can generate it by rereunning the init root command.
It behaves exactly the same as the servermeta.json file.
2020-06-10 11:09:49 -04:00
Daniel Scalzi
97ffb9c44b Add more properties to servermeta.json
This file will have to be regenerated for existing servers.
2020-06-04 20:25:50 -04:00
Daniel Scalzi
151ad481ad Update README.md. 2020-06-04 19:13:51 -04:00
Daniel Scalzi
2d8e5d16e7 Update fs-extra. 2020-06-04 17:51:57 -04:00
Daniel Scalzi
d627ce72a3 Replace AdmZip with node-stream-zip. 2020-06-02 23:07:59 -04:00
Daniel Scalzi
0b063e4bfc Added winston for logging. 2020-06-02 20:47:34 -04:00
Daniel Scalzi
672424b973 Add support for processing 1.12.2 Forge compiled with Forge Gradle 3 (#8).
Changed the resolver names to match the Forge Gradle versions, since that software version
determines the structure of the jar file and how it needs to be parsed.
Refactored the ForgeGradle3 resolver to conditionally execute the installer only when we
need artifacts generated by the installer. This allows the new 1.12.2 builds to be processed
without running the installer.
Changed the VersionSegemented interface to accept a libraryVersion, so we can segment within
a minecraft version.

This change is pending verification with Helios.
2020-06-02 17:16:15 -04:00
Daniel Scalzi
6e94883f23 Ensure invalid checksums arent used. 2020-05-30 01:26:39 -04:00
Daniel Scalzi
407032df61 Fix download of forge libraries for older versions.
Added function to determine extension type by checking the forge server.
2020-05-30 01:19:19 -04:00
Daniel Scalzi
87e5299af6 Update eslint. 2020-05-29 22:35:45 -04:00
Daniel Scalzi
00842c9dff Wrap MinecraftVersion in its own object. 2020-05-29 22:15:56 -04:00
Daniel Scalzi
23a452f0b6 Use TypeMetadata for lib extension, listen to process error event. 2020-05-19 22:14:11 -04:00
Daniel Scalzi
afcae366b5 Added basic library discovery.
Put all libraries into the libraries folder at the root of your server directory.
These will be added to the distribution as Library modules. Recall, Library modules
are added to the client's classpath at runtime.
2020-05-19 21:52:41 -04:00
Daniel Scalzi
43fb84f4a9 Fix vuln in eslint dependency. 2020-03-18 19:05:05 -04:00
Daniel Scalzi
00d8f6b12a Dependency Upgrade. 2020-03-16 21:00:57 -04:00
Daniel Scalzi
ef4506a8fd Fix issue where client slim and extra are appended with -stable on 1.14.4. 2020-02-25 15:40:27 -05:00
Daniel Scalzi
4d7c8e2f9f Dependency upgrade. 2020-02-25 14:58:45 -05:00
Daniel Scalzi
f99e53bed2 Default to 0.0.0 if 1.7-1.12 mod contains version wildcard.
This data likely lives only in the class file, which we cannot access.
2020-02-19 01:16:44 -05:00
Daniel Scalzi
126d6e67dc Dependency upgrade. 2020-02-19 01:06:11 -05:00
Daniel Scalzi
68ba25543b Fix url generation for recursive files. 2020-02-16 19:07:32 -05:00
Daniel Scalzi
80efeb268b Dependency upgrade. 2020-02-16 19:00:31 -05:00
Daniel Scalzi
54cc93d499 Implement recursive scan for File modules.
Ex. store resourcepacks at /files/resourcepacks/MyPack.zip
Added as a module with destination path resourcepacks/MyPack.zip
2020-02-02 17:30:53 -05:00
Daniel Scalzi
064a664687 Externalize spec typings, use eslint.
Tslint is deprecated, as such we have moved to eslint. Linted the project with more
stringent rules. The configuration will be changed as we figure out which rules we
should keep.
2020-01-26 01:01:07 -05:00
Daniel Scalzi
8911f54039 Automatic resolution of latest and recommended forge builds.
You can now use 'latest' or 'recommended' as the forge version option in the generate commands.
Two new commands are provided to query the latest/recommended version of forge.
2020-01-19 15:40:52 -05:00
Daniel Scalzi
f7173c4f5c Infer version from MANIFEST.MF if mod uses version wildcard. 2020-01-19 14:23:44 -05:00
Daniel Scalzi
ec30886cbb Client srg always required. 2020-01-19 13:21:28 -05:00
Daniel Scalzi
17e18c8c00 Include srg mappings as required library. (1.15 support). 2020-01-19 13:09:35 -05:00
Daniel Scalzi
2b0ba5ac07 Always tag client jar with forge artifact version.
This allows multiple versions of the same forge to be used.
Ex. Recommended 1.15 on prod, latest 1.15 on test.
Also fixed a bug with artifact classifier formatting.
2020-01-19 12:36:06 -05:00
Daniel Scalzi
b5e2b3db1c Remove forge/liteloader specific repos.
Just put everything in the libraries repo.
2020-01-19 12:08:53 -05:00
Daniel Scalzi
1ff02edc71 Add support for reading mods.toml file from 1.13+ forge mods. 2020-01-19 11:59:11 -05:00
Daniel Scalzi
4d342b7b0a Support for 1.13+ Forge Resolution.
Tested versions: 1.13.2
TODO: Test 1.14.4, 1.15.1
TODO: Read mod metadata from mods.toml in 1.13+
2020-01-19 10:58:02 -05:00
Daniel Scalzi
e827dea7ff Create default metadata if mcmod.info is malformed. 2020-01-18 13:01:27 -05:00
Daniel Scalzi
083c878a2d Fix bug with artifact id resolution. 2020-01-18 12:08:33 -05:00
Daniel Scalzi
aeef30e3c8 Initial work on 1.13 forge resolver, fixes.
Moved java executable to its own util class.
Fixed artifact resolution links for older versions of forge.

1.13 support is going to be difficult because forge does not
make anything developer friendly.
2020-01-18 10:50:28 -05:00
Daniel Scalzi
b4bef1b258 Update docs.
Leaving root and baseURL docs for now incase I decide to keep that functionality.
2020-01-12 07:30:08 -05:00
Daniel Scalzi
a236e8408e Forge and its submodules are now included in the generated distribution. 2020-01-12 07:15:21 -05:00
Daniel Scalzi
9e420db907 Propagate baseURL to resolved forge modules. 2020-01-12 06:20:23 -05:00
Daniel Scalzi
21d80fef82 Integrate with PackXZExtract to support pack.xz libs.
All pack.xz libraries now have their MD5s properly calculated.
Sha1 validations are performed on jar libraries. The checksums
forge provides for compressed files are neither the sha1 or md5
of the initial or extracted file. Ignoring those for now.

Still TODO is integration with baseurl. Might move both that
and base path to the .env file to reduce redundency in command processing.
2020-01-12 05:27:35 -05:00
Daniel Scalzi
0674bd5808 Parse version manifest and download forge libraries.
TODO:
Integrate base url propagation.
Integrate PackXZExtract to calculate hashes  of jar.pack.xz files.
OR ammend the distribution spec to accept different hash algos (requires helioslauncher update).
2020-01-12 03:42:34 -05:00
Daniel Scalzi
419a4d5e91 Completed steps up to downloading forge universal jar for 1.8-1.12.
Next step is processing the version.json and transforming it into a deliverable module.
2020-01-12 01:36:36 -05:00
Daniel Scalzi
baea8e657c Dependency upgrade. 2020-01-11 18:48:05 -05:00
Daniel Scalzi
4ae42092aa Add support for maven classifiers, make repo structures functional
For now each repo structure will resolve the absolute path of the desired file.
2020-01-11 18:45:35 -05:00
Daniel Scalzi
d2981c300a Dependency upgrade, add tentative usage.
Mainly including the usage so that I don't forget how it works after not working on it for months.
2019-12-20 05:07:45 -05:00
Daniel Scalzi
ad138d52a8 Dependency upgrade. 2019-10-27 13:29:51 -04:00
Daniel Scalzi
d04fb61f2a Setting up flow for resolvers.
Repo structure classes should be responsible for pulling versioned files.
Ex. /forge/1.14/ -> get the latest file (or only allow one file).
The resolver then gets that file to work with in order to resolve the forge
module, pull its libs, and attach them as submodules.
2019-09-10 00:59:51 -04:00
Daniel Scalzi
79ab8abad2 Added metadata readers for litemods and forgemods. 2019-08-22 00:10:15 -04:00
Daniel Scalzi
9e6d057462 Remove unneeded promise in DistributionStructure. 2019-08-21 22:28:08 -04:00
Daniel Scalzi
2bbf732d8e Begin work on new structure resolvers. 2019-08-21 22:25:11 -04:00