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

Add profiles/gate options for sonar

parent 572cc796
No related branches found
No related tags found
No related merge requests found
Pipeline #31890 passed
...@@ -9,6 +9,7 @@ import DojoBackendManager from '../../../managers/DojoBackendManager'; ...@@ -9,6 +9,7 @@ import DojoBackendManager from '../../../managers/DojoBackendManager';
import Toolbox from '../../../shared/helpers/Toolbox'; import Toolbox from '../../../shared/helpers/Toolbox';
import SharedConfig from '../../../shared/config/SharedConfig'; import SharedConfig from '../../../shared/config/SharedConfig';
import SharedSonarManager from '../../../shared/managers/SharedSonarManager'; import SharedSonarManager from '../../../shared/managers/SharedSonarManager';
import { Option } from 'commander';
class AssignmentCreateCommand extends CommanderCommand { class AssignmentCreateCommand extends CommanderCommand {
...@@ -26,15 +27,19 @@ class AssignmentCreateCommand extends CommanderCommand { ...@@ -26,15 +27,19 @@ class AssignmentCreateCommand extends CommanderCommand {
.action(this.commandAction.bind(this)); .action(this.commandAction.bind(this));
if (SharedConfig.sonar.enabled) { 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}));
} }
} }
protected async commandAction(options: { name: string, language: string, template?: string, members_id?: Array<number>, members_username?: Array<string>, clone?: string | boolean, sonar?: boolean}): 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, 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;
let sonar = false; let sonar = false;
let sonarGate: string | undefined = undefined;
let sonarProfiles: string[] = [];
// Check access and retrieve data // Check access and retrieve data
{ {
...@@ -57,6 +62,9 @@ class AssignmentCreateCommand extends CommanderCommand { ...@@ -57,6 +62,9 @@ class AssignmentCreateCommand extends CommanderCommand {
return; return;
} }
assignmentGetSonarSpinner.succeed(`Sonar is supported by the server`); assignmentGetSonarSpinner.succeed(`Sonar is supported by the server`);
sonarGate = options.gate;
sonarProfiles = options.profile ?? [];
} }
const assignmentGetSpinner: ora.Ora = ora('Checking assignment name availability').start(); const assignmentGetSpinner: ora.Ora = ora('Checking assignment name availability').start();
...@@ -106,7 +114,7 @@ class AssignmentCreateCommand extends CommanderCommand { ...@@ -106,7 +114,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); assignment = await DojoBackendManager.createAssignment(options.name, options.language, members, templateIdOrNamespace, sonar, sonarGate, sonarProfiles);
const oraInfo = (message: string) => { const oraInfo = (message: string) => {
ora({ ora({
......
...@@ -82,7 +82,7 @@ class DojoBackendManager { ...@@ -82,7 +82,7 @@ class DojoBackendManager {
} }
} }
public async createAssignment(name: string, language: string, members: Array<GitlabUser>, templateIdOrNamespace: string | null, sonar: boolean = false, verbose: boolean = true): Promise<Assignment> { 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> {
const spinner: ora.Ora = ora('Creating assignment...'); const spinner: ora.Ora = ora('Creating assignment...');
if ( verbose ) { if ( verbose ) {
...@@ -94,7 +94,9 @@ class DojoBackendManager { ...@@ -94,7 +94,9 @@ class DojoBackendManager {
name : name, name : name,
language : language, language : language,
members : JSON.stringify(members), members : JSON.stringify(members),
useSonar : String(sonar) useSonar : String(sonar),
sonarGate: sonarGate ?? '',
sonarProfiles : JSON.stringify(sonarProfiles),
}, templateIdOrNamespace ? { template: templateIdOrNamespace } : {})); }, templateIdOrNamespace ? { template: templateIdOrNamespace } : {}));
if ( verbose ) { if ( verbose ) {
......
Subproject commit 7f67e15c6434e78040528a647bf41c40957528c1 Subproject commit 102e79d9b78d79e495f7b82e5e767eb7898248db
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment