Commit Graph

32 Commits

Author SHA1 Message Date
Daniel Scalzi
24b0923903 Add support for untracked files.
Untracked file glob patterns are stored in the servermeta.json. See the README for detailed information.
2020-09-12 22:46:50 -04:00
Daniel Scalzi
1a19df0e93 Move struct out of model folder. 2020-09-12 20:14:18 -04:00
Daniel Scalzi
d2e317b4df Replace axios with got, check for empty version in forgemod meta. 2020-09-04 23:29:36 -04:00
Daniel Scalzi
f287388931 Pass arguments to Claritas via an argFile to bypass cli length limits. (#16) 2020-08-02 16:01:04 -04:00
Daniel Scalzi
0e83a071d7 Update claritas integration to support large result sets.
The output is now pulled from a json file.
2020-07-18 00:41:46 -04:00
Daniel Scalzi
bda96eb24e First pass at Claritas implementation.
The resolution logic was reworked so that Claritas only needs to be invoked once per supported type, ie only once for ForgeMod and LiteMod resolutions per server. The resolver now uses identifies module candidates and collects them. Claritas is invoked and the resulting metadata is stored. The module resolution then proceeds with all of this data available.
Toggleable module logic was also reworked to first accumulate all candidates and then process. This required the resolution function to optionally take a preprocess and postprocess callback to perform the necessary cleanup and transformations.
The minor rework was necessary because spawning child process is expensive, and we should only do it as often as we must to keep the application performant.
Claritas resolution also supports exceptions defined by the structure class. This is to facilitate handling of special cases (ex. Optifine).
2020-07-16 20:26:22 -04:00
Daniel Scalzi
8e611175ca Add support for optional vs required modules.
Directories representing toggleable modules are now segemented into three subdirectories.

* `required` Modules that are required.
* `optionalon` Modules that are optional and enabled by default.
* `optionaloff` Modules that are optional and disabled by default.

Filter your files into these three directories. Files at the root directory will no longer be processed. Currently, forgemods and litemods are the only toggleable modules.

For existing servers, just manually create these directories and move your files inside either of them. Generating a new server will automatically create them.
2020-07-05 13:51:49 -04:00
Daniel Scalzi
0a9c82434b Enable 1.16 support (resolves #13). 2020-06-25 18:53:10 -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
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
87e5299af6 Update eslint. 2020-05-29 22:35:45 -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
4d7c8e2f9f Dependency upgrade. 2020-02-25 14:58:45 -05:00
Daniel Scalzi
126d6e67dc Dependency upgrade. 2020-02-19 01:06:11 -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
1ff02edc71 Add support for reading mods.toml file from 1.13+ forge mods. 2020-01-19 11:59:11 -05:00
Daniel Scalzi
083c878a2d Fix bug with artifact id resolution. 2020-01-18 12:08:33 -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
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
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
79ab8abad2 Added metadata readers for litemods and forgemods. 2019-08-22 00:10:15 -04:00
Daniel Scalzi
2bbf732d8e Begin work on new structure resolvers. 2019-08-21 22:25:11 -04:00
Daniel Scalzi
68e09fbac7 Initial commit 2019-07-28 13:55:51 -04:00