diff --git a/NodeApp/src/commander/assignment/subcommands/AssignmentCreateCommand.ts b/NodeApp/src/commander/assignment/subcommands/AssignmentCreateCommand.ts index ee88f71ce4f9245aa42417e672f8f7bd9f719461..49299cd8a295253ee9aa22bc022d0f6530c1d6af 100644 --- a/NodeApp/src/commander/assignment/subcommands/AssignmentCreateCommand.ts +++ b/NodeApp/src/commander/assignment/subcommands/AssignmentCreateCommand.ts @@ -8,6 +8,7 @@ import GitlabManager from '../../../managers/GitlabManager'; import DojoBackendManager from '../../../managers/DojoBackendManager'; import Toolbox from '../../../shared/helpers/Toolbox'; import SharedConfig from '../../../shared/config/SharedConfig'; +import SharedSonarManager from '../../../shared/managers/SharedSonarManager'; class AssignmentCreateCommand extends CommanderCommand { @@ -48,13 +49,15 @@ class AssignmentCreateCommand extends CommanderCommand { return; } - const assignmentGetSonarSpinner: ora.Ora = ora('Checking server sonar status').start(); - sonar = (SharedConfig.sonar.enabled ? options.sonar ?? false : false); - if (sonar && !(await DojoBackendManager.isSonarEnabled())) { - assignmentGetSonarSpinner.fail(`Sonar is currently not supported by the server. Disable sonar integration or try again later.`); - return; + if (options.sonar) { + const assignmentGetSonarSpinner: ora.Ora = ora('Checking server sonar status').start(); + sonar = (SharedConfig.sonar.enabled ? options.sonar ?? false : false); + if ( sonar && !(await DojoBackendManager.isSonarEnabled()) ) { + assignmentGetSonarSpinner.fail(`Sonar is currently not supported by the server. Disable sonar integration or try again later.`); + return; + } + assignmentGetSonarSpinner.succeed(`Sonar is supported by the server`); } - assignmentGetSonarSpinner.succeed(`Sonar is supported by the server`); const assignmentGetSpinner: ora.Ora = ora('Checking assignment name availability').start(); if ( await DojoBackendManager.getAssignment(options.name) ) { @@ -64,6 +67,7 @@ class AssignmentCreateCommand extends CommanderCommand { assignmentGetSpinner.succeed(`Assignment name "${ options.name }" is available`); const languagesSpinner: ora.Ora = ora('Checking language support').start(); + // Dojo languages const languages = await DojoBackendManager.getLanguages(); if ( !languages.includes(options.language) ) { languagesSpinner.fail(`Language "${ options.language }" is not supported. Choose a supported language or "other"`); @@ -73,6 +77,15 @@ class AssignmentCreateCommand extends CommanderCommand { } return; } + // SonarQube languages + if (sonar) { + const sonarLang = await DojoBackendManager.getSonarLanguages(); + if (!sonarLang.includes(SharedSonarManager.mapLanguage(options.language))) { + languagesSpinner.fail(`Language "${ options.language }" is not supported with Sonar. Choose a supported language or disable sonar`); + return; + } + } + languagesSpinner.succeed(`Language "${ options.language }" is supported`); if ( options.template ) { diff --git a/NodeApp/src/managers/DojoBackendManager.ts b/NodeApp/src/managers/DojoBackendManager.ts index 061a306e9e0e22cab67030c580461f6f04c89164..a1d0343eaa65cbde115a24c77991bcd3b3e84717 100644 --- a/NodeApp/src/managers/DojoBackendManager.ts +++ b/NodeApp/src/managers/DojoBackendManager.ts @@ -243,6 +243,11 @@ class DojoBackendManager { return sonar.data.data.sonarEnabled; } + public async getSonarLanguages() { + const sonar = await axios.get<DojoBackendResponse<{ languages: string[] }>>(this.getApiUrl(ApiRoute.SONAR)); + return sonar.data.data.languages; + } + public async getLanguages() { const resp = await axios.get<DojoBackendResponse<string[]>>(this.getApiUrl(ApiRoute.LANGUAGES)); return resp.data.data; diff --git a/NodeApp/src/sharedByClients b/NodeApp/src/sharedByClients index e97f044e6fd030775df32581680b1caa9a359628..76e13d9d08d52d31ece9a58645ac113c51132c71 160000 --- a/NodeApp/src/sharedByClients +++ b/NodeApp/src/sharedByClients @@ -1 +1 @@ -Subproject commit e97f044e6fd030775df32581680b1caa9a359628 +Subproject commit 76e13d9d08d52d31ece9a58645ac113c51132c71