@@ -17,18 +17,16 @@ export const isLanguage = (language: string): language is Language => languages.
1717const run = async ( toolbox : GluegunToolbox ) => {
1818 const { config, prompt } = toolbox
1919 const id = config . runId ? Number ( config . runId ) : undefined
20- const { language, exercise } = config
20+ let { language, exercise } = config
2121
2222 if ( language === "all" ) {
2323 await runAll ( id )
2424 } else if ( exercise === "all" ) {
2525 await runLanguage ( { id, language } )
2626 } else {
27- await runLanguageExercise ( {
28- id,
29- language : language || ( await askLanguage ( prompt ) ) ,
30- exercise : exercise || ( await askExercise ( prompt , language ) ) ,
31- } )
27+ language = language || ( await askLanguage ( prompt ) )
28+ exercise = exercise || ( await askExercise ( prompt , language ) )
29+ await runLanguageExercise ( { id, language, exercise } )
3230 }
3331}
3432
@@ -73,6 +71,10 @@ const runLanguageExercise = async ({
7371 language : Language
7472 exercise : string
7573} ) => {
74+ if ( ! getExercises ( ) [ language ] . includes ( exercise ) ) {
75+ throw new Error ( `Exercise ${ exercise } not found for language ${ language } ` )
76+ }
77+
7678 const run = await findOrCreateRun ( { id } )
7779 const task = await findOrCreateTask ( { runId : run . id , language, exercise } )
7880 return runExercise ( { run, task } )
0 commit comments