Skip to content
Snippets Groups Projects
Commit f4ed114b authored by joel.vonderwe's avatar joel.vonderwe Committed by michael.minelli
Browse files

Add allowSonarFailure feature

parent 677d512e
Branches
No related tags found
No related merge requests found
Pipeline #38943 passed
......@@ -12,7 +12,7 @@ import SharedSonarManager from '../../../shared/managers/SharedSonarManager';
import { Option } from 'commander';
type CommandOptions = { name: string, language: string, template?: string, members_id?: Array<number>, members_username?: Array<string>, clone?: string | boolean, sonar?: boolean, gate?: string, profile?: string[] }
type CommandOptions = { name: string, language: string, template?: string, members_id?: Array<number>, members_username?: Array<string>, clone?: string | boolean, sonar?: boolean, sonarStrict: boolean, gate?: string, profile?: string[] }
class AssignmentCreateCommand extends CommanderCommand {
......@@ -39,6 +39,7 @@ class AssignmentCreateCommand extends CommanderCommand {
if ( SharedConfig.sonar.enabled ) {
this.command.requiredOption('-s, --sonar', 'add sonar to the code checking process for assignment and exercises')
.requiredOption('-d, --no-sonar', 'disable sonar for the code checking process for assignment and exercises')
.addOption(new Option('--sonar-strict', 'force the sonar gate to pass to validate the exercise results').default(false).implies({ sonar: true }))
.addOption(new Option('-g, --gate <gate>', 'quality gate for sonar').implies({ sonar: true }))
.addOption(new Option('-p, --profile <profile...>', 'quality profiles for sonar').default([]).implies({ sonar: true }));
}
......@@ -126,7 +127,7 @@ class AssignmentCreateCommand extends CommanderCommand {
private async createAssignment(options: CommandOptions) {
console.log(TextStyle.BLOCK('Please wait while we are creating the assignment (approximately 10 seconds)...'));
this.assignment = await DojoBackendManager.createAssignment(options.name, options.language, this.members!, this.templateIdOrNamespace, this.sonar, this.sonarGate, this.sonarProfiles);
this.assignment = await DojoBackendManager.createAssignment(options.name, options.language, this.members!, this.templateIdOrNamespace, this.sonar, !options.sonarStrict, this.sonarGate, this.sonarProfiles);
const oraInfo = (message: string) => {
ora({
......
......@@ -250,7 +250,7 @@ class DojoBackendManager {
}
}
public async createAssignment(name: string, language: string, members: Array<Gitlab.UserSchema>, templateIdOrNamespace: string | null, sonar: boolean = false, sonarGate: string | undefined = undefined, sonarProfiles: string[] = [], verbose: boolean = true): Promise<Assignment> {
public async createAssignment(name: string, language: string, members: Array<Gitlab.UserSchema>, templateIdOrNamespace: string | null, sonar: boolean = false, allowSonarFailure: boolean = false, sonarGate: string | undefined = undefined, sonarProfiles: string[] = [], verbose: boolean = true): Promise<Assignment> {
const spinner: ora.Ora = ora('Creating assignment...');
if ( verbose ) {
......@@ -259,12 +259,13 @@ class DojoBackendManager {
try {
const response = await axios.post<DojoBackendResponse<Assignment>>(DojoBackendHelper.getApiUrl(ApiRoute.ASSIGNMENT_CREATE), Object.assign({
name : name,
language : language,
members : JSON.stringify(members),
useSonar : String(sonar),
sonarGate : sonarGate ?? '',
sonarProfiles: JSON.stringify(sonarProfiles)
name : name,
language : language,
members : JSON.stringify(members),
useSonar : String(sonar),
allowSonarFailure: String(allowSonarFailure),
sonarGate : sonarGate ?? '',
sonarProfiles : JSON.stringify(sonarProfiles),
}, templateIdOrNamespace ? { template: templateIdOrNamespace } : {}));
if ( verbose ) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment