Commit Graph

27 Commits

Author SHA1 Message Date
Daniel Scalzi
2540ca383e Update deps, enforce return type. 2021-03-20 15:07:15 -04:00
Daniel Scalzi
5c9e44db91 Alias to run the project without building. Dependency upgrade. 2021-02-19 17:41:36 -05:00
Daniel Scalzi
28cb5a3d52 Dependency upgrade, replace moment with luxon. 2020-10-14 23:21:20 -04:00
Daniel Scalzi
42e47f4748 Add JSON schemas for DistroMeta and ServerMeta.
JSON schemas are used by editors to validate data and provide useful insights.
The JSON schemas will be generated by the init root command. They can also be generated
using the generate schemas command.

The JSON files will reference the schemas on the user's local disk rather than hosted versions.
This allows offline editing and ensures that the schema is exactly one-to-one with the local
version of Nebula.

Existing servers will have to manually add the schema property. To see how to do this, generate
a new server and copy the $\schema value.
The schema property will need to be added to any existing distrometa files. This is the same
format as the server meta, just replace ServerMeta with DistroMeta.

More information, including sample files with json schemas, is provided
on the README.
2020-09-13 01:06:50 -04:00
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
ea23912a85 Compensate for lack of mod id in litemod claritas resolution.
More tweaks to Claritas.
2020-07-16 20:26:22 -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
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
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
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
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
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
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
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
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
79ab8abad2 Added metadata readers for litemods and forgemods. 2019-08-22 00:10:15 -04:00
Daniel Scalzi
55afd5fb04 Add utility to parse maven identifiers. 2019-07-29 20:53:26 -04:00