diff --git a/sandbox/src/index.ts b/sandbox/src/index.ts index ac16deb..33f8af1 100644 --- a/sandbox/src/index.ts +++ b/sandbox/src/index.ts @@ -1,7 +1,7 @@ import dotenv from 'dotenv'; import fs from 'fs-extra'; import urlJoin from 'url-join'; -import { string, z } from 'zod'; +import { z } from 'zod'; import os, { EOL } from 'os'; import { join } from 'path'; import { simpleGit, SimpleGit } from 'simple-git'; @@ -90,12 +90,10 @@ async function cloneAndRun(submissionData: SubmissionGetData) { return; } const tmpDir = os.tmpdir(); - const buildDir = join(tmpDir, 'bwcontest-build'); - if (fs.existsSync(buildDir)) { - fs.removeSync(buildDir); + const repoDir = join(tmpDir, 'bwcontest-src'); + if (fs.existsSync(repoDir)) { + fs.removeSync(repoDir); } - fs.mkdirSync(buildDir); - const repoDir = join(buildDir, 'src'); fs.mkdirSync(repoDir); const teamRepoUrl = urlJoin( @@ -114,7 +112,7 @@ async function cloneAndRun(submissionData: SubmissionGetData) { try { if (submissionData.submission.teamLanguage === 'Java') { let res = await runJava({ - srcDir: buildDir, + srcDir: repoDir, mainFile: join(repoDir, problemName, problemName + '.java'), mainClass: problemName, input: submissionData.submission.problem.realInput diff --git a/sandbox/src/run/cpp.ts b/sandbox/src/run/cpp.ts index a4756fd..2db9403 100644 --- a/sandbox/src/run/cpp.ts +++ b/sandbox/src/run/cpp.ts @@ -4,6 +4,8 @@ import util from 'util'; import { RunResult, timeoutSeconds } from '../index.js'; import { IRunner, IRunnerParams, IRunnerReturn } from './types.js'; import kill from 'tree-kill'; +import os from 'os'; +import fs from 'fs-extra'; const execPromise = util.promisify(exec); @@ -20,9 +22,16 @@ interface IRunnerParamsCpp extends IRunnerParams { export const runCpp: IRunner = async function ( params: IRunnerParamsCpp ): IRunnerReturn { + const tmpDir = os.tmpdir(); + const buildDir = join(tmpDir, 'bwcontest-cpp'); + if (fs.existsSync(buildDir)) { + fs.removeSync(buildDir); + } + fs.mkdirSync(buildDir); + console.log(`- BUILD: ${params.problemName}`); - const configureCommand = `cmake -S ${params.srcDir} -B ${join(params.srcDir, 'build')}`; + const configureCommand = `cmake -S ${params.srcDir} -B ${buildDir}`; try { await execPromise(configureCommand); } catch (e) { @@ -34,7 +43,7 @@ export const runCpp: IRunner = async function ( }; } - const compileCommand = `cmake --build ${join(params.srcDir, 'build')} --target ${params.problemName}`; + const compileCommand = `cmake --build ${buildDir} --target ${params.problemName}`; try { await execPromise(compileCommand); } catch (e) { @@ -50,9 +59,9 @@ export const runCpp: IRunner = async function ( let runCommand = ''; if (params.cppPlatform === 'VisualStudio') { - runCommand = `${join(params.srcDir, 'build', 'Debug', `${params.problemName}.exe`)}`; + runCommand = `${join(buildDir, 'Debug', `${params.problemName}.exe`)}`; } else { - runCommand = `${join(params.srcDir, 'build', params.problemName)}`; + runCommand = `${join(buildDir, params.problemName)}`; } try { let outputBuffer = '';