diff --git a/NodeApp/src/commander/assignment/subcommands/AssignmentCreateCommand.ts b/NodeApp/src/commander/assignment/subcommands/AssignmentCreateCommand.ts index b755b37b80342781747d08c1277adf2e463e3959..3d664d00a5c11609b121b275a7088021fc378554 100644 --- a/NodeApp/src/commander/assignment/subcommands/AssignmentCreateCommand.ts +++ b/NodeApp/src/commander/assignment/subcommands/AssignmentCreateCommand.ts @@ -86,6 +86,20 @@ class AssignmentCreateCommand extends CommanderCommand { } languagesSpinner.succeed(`Language "${ options.language }" is supported`); + if ( (this.sonarGate ?? '') !== '' || this.sonarProfiles.length > 0 ) { + const qualitiesSpinner: ora.Ora = ora('Checking sonar qualities').start(); + + // SonarQube quality gate and profiles + const result = await DojoBackendManager.testSonarQualities(this.sonarGate ?? '', this.sonarProfiles); + if ( !result.valid ) { + const invalid = (result.badGate == undefined ? result.badProfiles : [ result.badGate, ...result.badProfiles ]); + qualitiesSpinner.fail(`Invalid quality gate or profiles : ${ invalid }`); + throw new Error(); + } + + qualitiesSpinner.succeed(`Quality gate and profiles are valid`); + } + // SonarQube languages if ( this.sonar ) { const sonarLang = await DojoBackendManager.getSonarLanguages(); diff --git a/NodeApp/src/managers/DojoBackendManager.ts b/NodeApp/src/managers/DojoBackendManager.ts index e82c9037c470d70bd420b61cb313ffc200769d90..939e68467478e117eb1a9236e358e96e7d6507b8 100644 --- a/NodeApp/src/managers/DojoBackendManager.ts +++ b/NodeApp/src/managers/DojoBackendManager.ts @@ -393,6 +393,15 @@ class DojoBackendManager { return resp.data.data; } + public async testSonarQualities(gate: string, profiles: string[]) { + const resp = await axios.post<DojoBackendResponse<{ valid: boolean, badProfiles: string[], badGate: string | undefined }>>( + this.getApiUrl(ApiRoute.SONAR_QUALITIES), { + gate: gate, + profiles: profiles, + }); + return resp.data.data; + } + public async createTag(name: string, type: string, verbose: boolean = true): Promise<Tag | undefined> { const spinner: ora.Ora = ora('Creating tag...');