1- import { RunJob , SubmissionJob , Job } from "types/job" ;
2- import { RunResult , SubmissionResult , Result } from 'types/result'
1+ import { Result , RunResult , SubmissionResult } from 'types/result'
32import config = require( '../../config.js' )
43import { exec , mkdir , rm } from 'shelljs'
54import * as path from 'path'
65
76import RunScenario from './run'
87import SubmissionScenario from './submission'
9- import { Scenario } from "types/scenario " ;
8+ import { RunJob , SubmitJob } from "./job " ;
109
11- export const executor = < J , R > ( scenario : Scenario ) => async ( job : Job & J ) : Promise < Result & R > => {
10+ export function execute ( job : RunJob ) : Promise < RunResult >
11+ export function execute ( job : SubmitJob ) : Promise < SubmissionResult >
12+ export async function execute ( job ) {
1213 // Create RUNBOX
1314 rm ( '-rf' , config . RUNBOX . DIR )
1415 mkdir ( '-p' , config . RUNBOX . DIR )
@@ -17,6 +18,13 @@ export const executor = <J, R>(scenario: Scenario) => async (job: Job & J): Prom
1718
1819 const LANG_CONFIG = config . LANGS [ job . lang ]
1920
21+ let scenario
22+ if ( job instanceof RunJob ) {
23+ scenario = RunScenario
24+ } else if ( job instanceof SubmitJob ) {
25+ scenario = SubmissionScenario
26+ }
27+
2028 // Setup RUNBOX
2129 await scenario . setup ( currentJobDir , job ) // TODO:
2230
@@ -33,12 +41,9 @@ export const executor = <J, R>(scenario: Scenario) => async (job: Job & J): Prom
3341 ` )
3442
3543 // Get result
36- const result = < Result & R > ( await scenario . result ( currentJobDir , job . id ) )
44+ const result = await scenario . result ( currentJobDir , job . id )
3745
3846 rm ( '-rf' , currentJobDir )
3947
4048 return result
4149}
42-
43- export const runExecutor = executor < RunJob , RunResult > ( RunScenario )
44- export const submissionExecutor = executor < SubmissionJob , SubmissionResult > ( SubmissionScenario )
0 commit comments