From 0e83a071d753b7682d0f9a18e17228a6a7b17307 Mon Sep 17 00:00:00 2001 From: Daniel Scalzi Date: Sat, 18 Jul 2020 00:41:46 -0400 Subject: [PATCH] Update claritas integration to support large result sets. The output is now pulled from a json file. --- libraries/java/Claritas.jar | Bin 5109031 -> 5110405 bytes package-lock.json | 6 +-- package.json | 2 +- .../struct/model/module/module.struct.ts | 2 +- src/util/java/ClaritasWrapper.ts | 40 ++++++++++++++---- src/util/java/JarExecutor.ts | 7 ++- 6 files changed, 43 insertions(+), 14 deletions(-) diff --git a/libraries/java/Claritas.jar b/libraries/java/Claritas.jar index 619fa03407a1a4845d1852b4cc4f8113d45622e5..c390769efbb590420a4cfc3c84374a851f118393 100644 GIT binary patch delta 63483 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%0D~9sxFzp*uOPhz5 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 { protected async invokeClaritas(moduleCandidates: ModuleCandidate[]): Promise { if(this.getClaritasType() != null) { - const claritasExecutor = new ClaritasWrapper() + const claritasExecutor = new ClaritasWrapper(this.absoluteRoot) let claritasCandidates = moduleCandidates const exceptionCandidates: [ModuleCandidate, ClaritasException][] = [] diff --git a/src/util/java/ClaritasWrapper.ts b/src/util/java/ClaritasWrapper.ts index 6c97e9d..ad5475f 100644 --- a/src/util/java/ClaritasWrapper.ts +++ b/src/util/java/ClaritasWrapper.ts @@ -1,20 +1,36 @@ import { JarExecutor } from './JarExecutor' -import { join } from 'path' +import { join, resolve } from 'path' import { ClaritasResult } from '../../model/claritas/ClaritasResult' import { MinecraftVersion } from '../MinecraftVersion' import { LibraryType } from '../../model/claritas/ClaritasLibraryType' +import { pathExists, remove, readFile } from 'fs-extra' export class ClaritasWrapper extends JarExecutor { - constructor() { + private readonly WORK_DIR: string + private readonly OUTPUT_FILE: string + + constructor(cwd: string) { super('Claritas') - this.stdoutListeners.push((data) => { - const clean = data.toString('utf8').trim() as string - const spike = 'results::' - if(clean.startsWith(spike)) { - this.lastExecutionResult = JSON.parse(clean.substr(spike.length)) as ClaritasResult + + this.WORK_DIR = resolve(cwd, 'claritasWork') + this.OUTPUT_FILE = resolve(this.WORK_DIR, 'claritasOutput.json') + + this.onCloseListeners.push(async (code) => { + if(code !== 0) { + this.logger.error('Claritas finished with non-zero exit code, ', code) + this.lastExecutionResult = undefined! + } else { + if(pathExists(this.OUTPUT_FILE)) { + this.lastExecutionResult = JSON.parse((await readFile(this.OUTPUT_FILE)).toString('utf8')) + } else { + this.logger.error('Claritas output file not found when exit code is 0, is this a bug?') + this.lastExecutionResult = undefined! + } } + await this.cleanOutput() }) + } protected getJarPath(): string { @@ -25,8 +41,16 @@ export class ClaritasWrapper extends JarExecutor { return super.executeJar( '--absoluteJarPaths', absoluteJarPaths.join(','), '--libraryType', libraryType, - '--mcVersion', mcVersion.toString() + '--mcVersion', mcVersion.toString(), + '--outputFile', this.OUTPUT_FILE, + '--previewOutput', 'true' ) } + private async cleanOutput(): Promise { + if(pathExists(this.WORK_DIR)) { + remove(this.WORK_DIR) + } + } + } \ No newline at end of file diff --git a/src/util/java/JarExecutor.ts b/src/util/java/JarExecutor.ts index 24454b5..be30d46 100644 --- a/src/util/java/JarExecutor.ts +++ b/src/util/java/JarExecutor.ts @@ -11,6 +11,7 @@ export abstract class JarExecutor { protected stdoutListeners: ((chunk: any) => void)[] = [] // eslint-disable-next-line @typescript-eslint/no-explicit-any protected stderrListeners: ((chunk: any) => void)[] = [] + protected onCloseListeners: ((code: number) => Promise)[] = [] protected lastExecutionResult!: T @@ -34,10 +35,14 @@ export abstract class JarExecutor { child.stderr.on('data', (data) => this.logger.error(data.toString('utf8').trim())) this.stderrListeners.forEach(l => child.stderr.on('data', l)) - child.on('close', code => { + child.on('close', async code => { this.logger.info('Exited with code', code) + for(const l of this.onCloseListeners) { + await l(code) + } resolve(this.lastExecutionResult) }) + child.on('error', (err) => { this.logger.info('Error during process execution', err) reject(err)