Select Git revision
GlobalHelper.ts
GlobalHelper.ts 2.23 KiB
import { Command, Option } from 'commander';
import SessionManager from '../managers/SessionManager.js';
import TextStyle from '../types/TextStyle.js';
import ora from 'ora';
import DojoBackendManager from '../managers/DojoBackendManager.js';
import Assignment from '../sharedByClients/models/Assignment.js';
import Config from '../config/Config';
class GlobalHelper {
public runCommandDefinition(command: Command, isAssignment: boolean = true): Command {
command
.option('-p, --path <value>', `${ isAssignment ? 'assignment' : 'exercise' } path`, Config.folders.defaultLocalExercise)
.option('-v, --verbose', 'verbose mode - display principal container output in live')
.addOption(new Option('-w, --super-verbose', 'verbose mode - display all docker compose logs (build included) in live').conflicts('verbose'))
.addOption(new Option('--verbose-ssj2').hideHelp().implies({ superVerbose: true }));
return command;
}
public readonly refreshGitlabTokenFunction = async () => {
await SessionManager.refreshTokens();
return SessionManager.gitlabCredentials.accessToken ?? '';
};
public async checkAssignmentCorrectionAccess(assignmentName: string): Promise<Assignment | undefined> {
console.log(TextStyle.BLOCK('Please wait while we check access...'));
const assignmentGetSpinner: ora.Ora = ora('Checking if assignment exists').start();
const assignment = await DojoBackendManager.getAssignment(assignmentName);
if ( !assignment ) {
assignmentGetSpinner.fail(`The assignment doesn't exists`);
return undefined;
}
assignmentGetSpinner.succeed(`The assignment exists`);
const assignmentAccessSpinner: ora.Ora = ora('Checking assignment access').start();
if ( assignment.staff.find(staff => staff.id === SessionManager.profile?.id) === undefined ) {
assignmentAccessSpinner.fail(`You are not in the staff of the assignment`);
return undefined;
}
assignmentAccessSpinner.succeed(`You are in the staff of the assignment`);
return assignment;
}
}
export default new GlobalHelper();