From 21d80fef82254f147f1dc365b17143658ba00982 Mon Sep 17 00:00:00 2001 From: Daniel Scalzi Date: Sun, 12 Jan 2020 05:27:35 -0500 Subject: [PATCH] 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. --- README.md | 17 +++ libraries/java/PackXZExtract.jar | Bin 0 -> 115477 bytes package-lock.json | 5 + package.json | 1 + src/index.ts | 7 +- src/model/struct/repo/repo.struct.ts | 5 + .../forge/adapter/forge18.resolver.ts | 100 ++++++++++++++++-- src/util/PackXZExtractWrapper.ts | 43 ++++++++ src/util/maven.ts | 4 +- 9 files changed, 173 insertions(+), 9 deletions(-) create mode 100644 libraries/java/PackXZExtract.jar create mode 100644 src/util/PackXZExtractWrapper.ts diff --git a/README.md b/README.md index 6ea2a58..5afb704 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,23 @@ Generate a distribution.json for Helios. +## Requirements + +* Node.js 12 +* Java 8+ (https://adoptopenjdk.net/) + * This is required to process [XZ](https://tukaani.org/xz/format.html) files. + +## Setup + +1. Clone the repository +2. Install the dependencies (`npm i`) +3. Create a `.env` file at the root directory and set the required values. + +Example +```properties +JAVA_EXECUTABLE=C:\Program Files\AdoptOpenJDK\jdk-8.0.222.10-hotspot\bin\java.exe +``` + ## Usage Nebula is not complete. The following usage is tentative. diff --git a/libraries/java/PackXZExtract.jar b/libraries/java/PackXZExtract.jar new file mode 100644 index 0000000000000000000000000000000000000000..56a939c6fc2d7e09b0b5678914cd98e5652c343c GIT binary patch literal 115477 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э%vZ(o~>sffv41Q*SL5n*9TE(-ghW#T2k)?*uI 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

BU!cFKCcs?NR5?` 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index f644a42..e8ceeac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -222,6 +222,11 @@ "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", "dev": true }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", diff --git a/package.json b/package.json index 6ca9800..75331d6 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "dependencies": { "adm-zip": "^0.4.13", "axios": "^0.19.1", + "dotenv": "^8.2.0", "fs-extra": "^8.1.0", "yargs": "^15.1.0" } diff --git a/src/index.ts b/src/index.ts index ce1fea2..a19e29b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,15 @@ /* tslint:disable:no-shadowed-variable */ +import dotenv from 'dotenv' import { writeFile } from 'fs-extra' import { resolve as resolvePath } from 'path' import { URL } from 'url' +import { inspect } from 'util' import yargs from 'yargs' import { DistributionStructure } from './model/struct/model/distribution.struct' import { ResolverRegistry } from './resolver/ResolverRegistry' +dotenv.config() + function rootOption(yargs: yargs.Argv) { return yargs.option('root', { describe: 'File structure root.', @@ -176,10 +180,11 @@ const testCommand: yargs.CommandModule = { }, handler: async (argv) => { console.debug(`Invoked test with mcVer ${argv.mcVer} forgeVer ${argv.forgeVer}`) + console.log(process.cwd()) const resolver = ResolverRegistry.getForgeResolver('1.12.2', '14.23.5.2847', 'D:/TestRoot2', 'D:/TestRoot2') if (resolver != null) { const mdl = await resolver.getModule() - console.log(mdl) + console.log(inspect(mdl, false, null, true)) } } } diff --git a/src/model/struct/repo/repo.struct.ts b/src/model/struct/repo/repo.struct.ts index 0eb528b..954f98a 100644 --- a/src/model/struct/repo/repo.struct.ts +++ b/src/model/struct/repo/repo.struct.ts @@ -1,3 +1,4 @@ +import { join } from 'path' import { BaseFileStructure } from '../BaseFileStructure' import { ForgeRepoStructure } from './forgerepo.struct' import { LibRepoStructure } from './librepo.struct' @@ -38,4 +39,8 @@ export class RepoStructure extends BaseFileStructure { return this.libRepoStruct } + public getTempDirectory() { + return join(this.absoluteRoot, 'temp') + } + } diff --git a/src/resolver/forge/adapter/forge18.resolver.ts b/src/resolver/forge/adapter/forge18.resolver.ts index cc429eb..9390907 100644 --- a/src/resolver/forge/adapter/forge18.resolver.ts +++ b/src/resolver/forge/adapter/forge18.resolver.ts @@ -1,12 +1,14 @@ import AdmZip from 'adm-zip' import { createHash } from 'crypto' -import { lstat, readFile, Stats } from 'fs-extra' +import { copy, lstat, mkdirs, pathExists, readFile, remove, Stats } from 'fs-extra' +import { basename, join } from 'path' import { VersionManifest } from '../../../model/forge/versionmanifest' import { Artifact } from '../../../model/spec/artifact' import { Module } from '../../../model/spec/module' import { Type } from '../../../model/spec/type' import { ForgeRepoStructure } from '../../../model/struct/repo/forgerepo.struct' import { MavenUtil } from '../../../util/maven' +import { PackXZExtractWrapper } from '../../../util/PackXZExtractWrapper' import { ForgeResolver } from '../forge.resolver' export class Forge18Adapter extends ForgeResolver { @@ -80,6 +82,8 @@ export class Forge18Adapter extends ForgeResolver { subModules: [] } + const postProcessQueue = [] + for (const lib of versionManifest.libraries) { if (lib.name.startsWith('net.minecraftforge:forge:')) { // We've already processed forge. @@ -91,23 +95,66 @@ export class Forge18Adapter extends ForgeResolver { const extension = this.determineExtension(lib.checksums) const localPath = libRepo.getArtifactById(lib.name, extension) as string - if (!await libRepo.artifactExists(localPath)) { + const postProcess = extension === 'jar.pack.xz' + + let queueDownload = !await libRepo.artifactExists(localPath) + let libBuf + + if (!queueDownload) { + libBuf = await readFile(localPath) + // VERIFY HASH + if (!postProcess) { // Checksums for .pack.xz in the version.json are completely useless. + if (lib.checksums != null) { + const sha1 = createHash('sha1').update(libBuf).digest('hex') + if (sha1 !== lib.checksums[0]) { + console.debug('Hashes do not match, redownloading..') + queueDownload = true + } + } + } + } else { console.debug(`Not found locally, downloading..`) + queueDownload = true + } + + if (queueDownload) { await libRepo.downloadArtifactById(lib.url || 'https://libraries.minecraft.net/', lib.name, extension) + libBuf = await readFile(localPath) } else { console.debug('Using local copy.') } - const libBuf = await readFile(localPath) const stats = await lstat(localPath) + const mavenComponents = MavenUtil.getMavenComponents(lib.name) + const properId = MavenUtil.mavenComponentsToIdentifier( + mavenComponents.group, mavenComponents.artifact, mavenComponents.version, + mavenComponents.classifier, extension + ) + forgeModule.subModules?.push({ - id: lib.name, - name: `Minecraft Forge (${MavenUtil.getMavenComponents(lib.name)?.artifact})`, + id: properId, + name: `Minecraft Forge (${mavenComponents?.artifact})`, type: Type.Library, - artifact: this.generateArtifact(libBuf, stats) + artifact: this.generateArtifact(libBuf as Buffer, stats) }) + if (postProcess) { + postProcessQueue.push({ + id: properId, + localPath + }) + } + + } + + for (const entry of await this.processPackXZFiles(postProcessQueue)) { + const el = forgeModule.subModules?.find((element) => element.id === entry.id) + if (el != null) { + el.artifact.MD5 = entry.MD5 + } else { + console.error(`Error during post processing, could not update ${entry.id}`) + } } return forgeModule @@ -125,4 +172,45 @@ export class Forge18Adapter extends ForgeResolver { return checksums != null && checksums.length > 1 ? 'jar.pack.xz' : 'jar' } + private async processPackXZFiles( + processingQueue: Array<{id: string, localPath: string}>): Promise> { + + const accumulator = [] + + const tempDir = this.repoStructure.getTempDirectory() + + if (await pathExists(tempDir)) { + await remove(tempDir) + } + + await mkdirs(tempDir) + + const files = [] + for (const entry of processingQueue) { + const tmpFile = join(tempDir, basename(entry.localPath)) + await copy(entry.localPath, tmpFile) + files.push(tmpFile) + } + + console.debug('Spawning PackXZExtract.') + await PackXZExtractWrapper.extractUnpack(files) + console.debug('All filex extracted, calculating hashes..') + + for (const entry of processingQueue) { + const tmpFileName = basename(entry.localPath) + const tmpFile = join(tempDir, tmpFileName.substring(0, tmpFileName.indexOf('.pack.xz'))) + const buf = await readFile(tmpFile) + accumulator.push({ + id: entry.id, + MD5: createHash('md5').update(buf).digest('hex') + }) + } + + console.debug('Complete, removing temp directory..') + + await remove(tempDir) + + return accumulator + } + } diff --git a/src/util/PackXZExtractWrapper.ts b/src/util/PackXZExtractWrapper.ts new file mode 100644 index 0000000..273874f --- /dev/null +++ b/src/util/PackXZExtractWrapper.ts @@ -0,0 +1,43 @@ +import { spawn } from 'child_process' +import { join } from 'path' + +export class PackXZExtractWrapper { + + public static getJavaExecutable() { + return process.env.JAVA_EXECUTABLE as string + } + + public static getPackXZExtract() { + return join(process.cwd(), 'libraries', 'java', 'PackXZExtract.jar') + } + + public static extractUnpack(paths: string[]) { + return PackXZExtractWrapper.execute('-packxz', paths) + } + + public static extract(paths: string[]) { + return PackXZExtractWrapper.execute('-xz', paths) + } + + public static unpack(paths: string[]) { + return PackXZExtractWrapper.execute('-pack', paths) + } + + private static execute(command: string, paths: string[]) { + return new Promise((resolve, reject) => { + const child = spawn(PackXZExtractWrapper.getJavaExecutable(), [ + '-jar', + PackXZExtractWrapper.getPackXZExtract(), + command, + paths.join(',') + ]) + child.stdout.on('data', (data) => console.log('[PackXZExtract]', data.toString('utf8'))) + child.stderr.on('data', (data) => console.error('[PackXZExtract]', data.toString('utf8'))) + child.on('close', (code, signal) => { + console.log('[PackXZExtract]', 'Exited with code', code) + resolve() + }) + }) + } + +} diff --git a/src/util/maven.ts b/src/util/maven.ts index 80e667f..06ad80f 100644 --- a/src/util/maven.ts +++ b/src/util/maven.ts @@ -17,7 +17,7 @@ export class MavenUtil { public static getMavenComponents(id: string, extension = 'jar') { if (!MavenUtil.isMavenIdentifier(id)) { - return null + throw new Error('Id is not a maven identifier.') } let result @@ -38,7 +38,7 @@ export class MavenUtil { } } - return null + throw new Error('Failed to process maven data.') } public static mavenIdentifierToString(id: string, extension = 'jar') {