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

Add profiles/gate options for sonar

parent 32c4b92f
Branches
No related tags found
No related merge requests found
......@@ -9,9 +9,10 @@ import * as Gitlab from '@gitbeaker/rest';
import TextStyle from '../../../types/TextStyle.js';
import Config from '../../../config/Config';
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 }
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[] }
class AssignmentCreateCommand extends CommanderCommand {
......@@ -21,6 +22,8 @@ class AssignmentCreateCommand extends CommanderCommand {
private templateIdOrNamespace: string | null = null;
private assignment!: Assignment;
private sonar: boolean = false;
private sonarGate: string | undefined = undefined;
private sonarProfiles: string[] = [];
protected defineCommand() {
this.command
......@@ -34,7 +37,9 @@ class AssignmentCreateCommand extends CommanderCommand {
.action(this.commandAction.bind(this));
if ( SharedConfig.sonar.enabled ) {
this.command.requiredOption('-s, --sonar', 'add sonar to the code checking process for exercises derived from the assignment');
this.command.requiredOption('-s, --sonar', 'add sonar to the code checking process for exercises derived from the assignment')
.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 }));
}
}
......@@ -56,6 +61,9 @@ class AssignmentCreateCommand extends CommanderCommand {
throw new Error();
}
assignmentGetSonarSpinner.succeed(`Sonar is supported by the server`);
this.sonarGate = options.gate;
this.sonarProfiles = options.profile ?? [];
}
const assignmentGetSpinner: ora.Ora = ora('Checking assignment name availability').start();
......@@ -103,7 +111,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.assignment = await DojoBackendManager.createAssignment(options.name, options.language, this.members!, this.templateIdOrNamespace, this.sonar, this.sonarGate, this.sonarProfiles);
const oraInfo = (message: string) => {
ora({
......
......@@ -247,7 +247,7 @@ class DojoBackendManager {
}
}
public async createAssignment(name: string, language: string, members: Array<Gitlab.UserSchema>, templateIdOrNamespace: string | null, sonar: boolean = false, verbose: boolean = true): Promise<Assignment> {
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> {
const spinner: ora.Ora = ora('Creating assignment...');
if ( verbose ) {
......@@ -259,7 +259,9 @@ class DojoBackendManager {
name : name,
language: language,
members : JSON.stringify(members),
useSonar: String(sonar)
useSonar: String(sonar),
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