Skip to content
Snippets Groups Projects
Commit f5988dac authored by joel.vonderwe's avatar joel.vonderwe
Browse files

Add allowSonarFailure feature

parent 4de84df6
No related branches found
No related tags found
No related merge requests found
Pipeline #38942 passed
...@@ -29,12 +29,13 @@ class AssignmentCreateCommand extends CommanderCommand { ...@@ -29,12 +29,13 @@ class AssignmentCreateCommand extends CommanderCommand {
if (SharedConfig.sonar.enabled) { if (SharedConfig.sonar.enabled) {
this.command.requiredOption('-s, --sonar', 'add sonar to the code checking process for assignment and exercises') 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') .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('-g, --gate <gate>', 'quality gate for sonar').implies({sonar: true}))
.addOption(new Option('-p, --profile <profile...>', 'quality profiles for sonar').default([]).implies({sonar: true})); .addOption(new Option('-p, --profile <profile...>', 'quality profiles for sonar').default([]).implies({sonar: true}))
} }
} }
protected async commandAction(options: { name: string, language: string, template?: string, members_id?: Array<number>, members_username?: Array<string>, clone?: string | boolean, sonar?: boolean, gate?: string, profile?: string[]}): Promise<void> { protected async commandAction(options: { 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[]}): Promise<void> {
let members!: Array<GitlabUser> | false; let members!: Array<GitlabUser> | false;
let templateIdOrNamespace: string | null = null; let templateIdOrNamespace: string | null = null;
let assignment!: Assignment; let assignment!: Assignment;
...@@ -129,7 +130,7 @@ class AssignmentCreateCommand extends CommanderCommand { ...@@ -129,7 +130,7 @@ class AssignmentCreateCommand extends CommanderCommand {
console.log(chalk.cyan('Please wait while we are creating the assignment (approximately 10 seconds)...')); console.log(chalk.cyan('Please wait while we are creating the assignment (approximately 10 seconds)...'));
try { try {
assignment = await DojoBackendManager.createAssignment(options.name, options.language, members, templateIdOrNamespace, sonar, sonarGate, sonarProfiles); assignment = await DojoBackendManager.createAssignment(options.name, options.language, members, templateIdOrNamespace, sonar, !options.sonarStrict, sonarGate, sonarProfiles);
const oraInfo = (message: string) => { const oraInfo = (message: string) => {
ora({ ora({
......
...@@ -83,7 +83,7 @@ class DojoBackendManager { ...@@ -83,7 +83,7 @@ class DojoBackendManager {
} }
} }
public async createAssignment(name: string, language: string, members: Array<GitlabUser>, 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<GitlabUser>, 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...'); const spinner: ora.Ora = ora('Creating assignment...');
if ( verbose ) { if ( verbose ) {
...@@ -92,12 +92,13 @@ class DojoBackendManager { ...@@ -92,12 +92,13 @@ class DojoBackendManager {
try { try {
const response = await axios.post<DojoBackendResponse<Assignment>>(this.getApiUrl(ApiRoute.ASSIGNMENT_CREATE), Object.assign({ const response = await axios.post<DojoBackendResponse<Assignment>>(this.getApiUrl(ApiRoute.ASSIGNMENT_CREATE), Object.assign({
name : name, name : name,
language : language, language : language,
members : JSON.stringify(members), members : JSON.stringify(members),
useSonar : String(sonar), useSonar : String(sonar),
sonarGate: sonarGate ?? '', allowSonarFailure: String(allowSonarFailure),
sonarProfiles : JSON.stringify(sonarProfiles), sonarGate : sonarGate ?? '',
sonarProfiles : JSON.stringify(sonarProfiles),
}, templateIdOrNamespace ? { template: templateIdOrNamespace } : {})); }, templateIdOrNamespace ? { template: templateIdOrNamespace } : {}));
if ( verbose ) { if ( verbose ) {
......
Subproject commit d15be9b16181f5f172d51b13966e0e44bd34f55d Subproject commit 047bc2e9e1c2ef6eed1c04806c2cba8e08bb1c3e
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment