Skip to content
Snippets Groups Projects
Commit 5eb5f9f6 authored by michael.minelli's avatar michael.minelli
Browse files

CLI => Change commands folder structure

parent 57de6ca9
No related branches found
No related tags found
No related merge requests found
Showing
with 72 additions and 104 deletions
import CommanderCommand from '../CommanderCommand'; import CommanderCommand from '../CommanderCommand';
import AssignmentCreateCommand from './AssignmentCreateCommand'; import AssignmentCreateCommand from './subcommands/AssignmentCreateCommand';
import AssignmentPublishCommand from './AssignmentPublishCommand'; import AssignmentPublishCommand from './subcommands/AssignmentPublishCommand';
import AssignmentUnpublishCommand from './AssignmentUnpublishCommand'; import AssignmentUnpublishCommand from './subcommands/AssignmentUnpublishCommand';
class AssignmentCommand extends CommanderCommand { class AssignmentCommand extends CommanderCommand {
......
import CommanderCommand from '../CommanderCommand'; import CommanderCommand from '../../CommanderCommand';
import chalk from 'chalk'; import chalk from 'chalk';
import ora from 'ora'; import ora from 'ora';
import GitlabManager from '../../managers/GitlabManager'; import GitlabManager from '../../../managers/GitlabManager';
import GitlabUser from '../../shared/types/Gitlab/GitlabUser'; import GitlabUser from '../../../shared/types/Gitlab/GitlabUser';
import DojoBackendManager from '../../managers/DojoBackendManager'; import DojoBackendManager from '../../../managers/DojoBackendManager';
import Toolbox from '../../shared/helpers/Toolbox'; import Toolbox from '../../../shared/helpers/Toolbox';
import AccessesHelper from '../../helpers/AccessesHelper'; import AccessesHelper from '../../../helpers/AccessesHelper';
import Assignment from '../../sharedByClients/models/Assignment'; import Assignment from '../../../sharedByClients/models/Assignment';
class AssignmentCreateCommand extends CommanderCommand { class AssignmentCreateCommand extends CommanderCommand {
...@@ -68,8 +68,7 @@ class AssignmentCreateCommand extends CommanderCommand { ...@@ -68,8 +68,7 @@ class AssignmentCreateCommand extends CommanderCommand {
const oraInfo = (message: string) => { const oraInfo = (message: string) => {
ora({ ora({
text : message, text: message, indent: 4
indent: 4
}).start().info(); }).start().info();
}; };
......
import CommanderCommand from '../CommanderCommand'; import CommanderCommand from '../../CommanderCommand';
import inquirer from 'inquirer'; import inquirer from 'inquirer';
import chalk from 'chalk'; import chalk from 'chalk';
import SessionManager from '../../managers/SessionManager'; import SessionManager from '../../../managers/SessionManager';
import ora from 'ora'; import ora from 'ora';
import DojoBackendManager from '../../managers/DojoBackendManager'; import DojoBackendManager from '../../../managers/DojoBackendManager';
import Assignment from '../../sharedByClients/models/Assignment'; import Assignment from '../../../sharedByClients/models/Assignment';
abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand { abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand {
...@@ -21,9 +21,7 @@ abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand { ...@@ -21,9 +21,7 @@ abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand {
protected async commandAction(assignmentNameOrUrl: string, options: { force: boolean }): Promise<void> { protected async commandAction(assignmentNameOrUrl: string, options: { force: boolean }): Promise<void> {
if ( !options.force ) { if ( !options.force ) {
options.force = (await inquirer.prompt({ options.force = (await inquirer.prompt({
type : 'confirm', type: 'confirm', name: 'force', message: this.publish ? 'Are you sure you want to publish this assignment?' : 'Are you sure you want to unpublish this assignment?'
name : 'force',
message: this.publish ? 'Are you sure you want to publish this assignment?' : 'Are you sure you want to unpublish this assignment?'
})).force; })).force;
} }
...@@ -42,12 +40,10 @@ abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand { ...@@ -42,12 +40,10 @@ abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand {
ora('Checking assignment:').start().info(); ora('Checking assignment:').start().info();
ora({ ora({
text : assignmentNameOrUrl, text: assignmentNameOrUrl, indent: 4
indent: 4
}).start().info(); }).start().info();
const assignmentGetSpinner: ora.Ora = ora({ const assignmentGetSpinner: ora.Ora = ora({
text : 'Checking if assignment exists', text: 'Checking if assignment exists', indent: 8
indent: 8
}).start(); }).start();
assignment = await DojoBackendManager.getAssignment(assignmentNameOrUrl); assignment = await DojoBackendManager.getAssignment(assignmentNameOrUrl);
if ( !assignment ) { if ( !assignment ) {
...@@ -57,8 +53,7 @@ abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand { ...@@ -57,8 +53,7 @@ abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand {
assignmentGetSpinner.succeed(`The assignment exists`); assignmentGetSpinner.succeed(`The assignment exists`);
const assignmentCheckAccessSpinner: ora.Ora = ora({ const assignmentCheckAccessSpinner: ora.Ora = ora({
text : 'Checking accesses', text: 'Checking accesses', indent: 8
indent: 8
}).start(); }).start();
if ( !assignment.staff ) { if ( !assignment.staff ) {
assignmentCheckAccessSpinner.fail(`You are not in the staff of this assignment`); assignmentCheckAccessSpinner.fail(`You are not in the staff of this assignment`);
......
import CommanderCommand from '../CommanderCommand'; import CommanderCommand from '../CommanderCommand';
import ExerciseCreateCommand from './ExerciseCreateCommand'; import ExerciseCreateCommand from './subcommands/ExerciseCreateCommand';
import ExerciseRunCommand from './ExerciseRunCommand'; import ExerciseRunCommand from './subcommands/ExerciseRunCommand';
class ExerciseCommand extends CommanderCommand { class ExerciseCommand extends CommanderCommand {
......
import CommanderCommand from '../CommanderCommand'; import CommanderCommand from '../../CommanderCommand';
import chalk from 'chalk'; import chalk from 'chalk';
import GitlabManager from '../../managers/GitlabManager'; import GitlabManager from '../../../managers/GitlabManager';
import GitlabUser from '../../shared/types/Gitlab/GitlabUser'; import GitlabUser from '../../../shared/types/Gitlab/GitlabUser';
import ora from 'ora'; import ora from 'ora';
import DojoBackendManager from '../../managers/DojoBackendManager'; import DojoBackendManager from '../../../managers/DojoBackendManager';
import AccessesHelper from '../../helpers/AccessesHelper'; import AccessesHelper from '../../../helpers/AccessesHelper';
import Assignment from '../../sharedByClients/models/Assignment'; import Assignment from '../../../sharedByClients/models/Assignment';
import Exercise from '../../sharedByClients/models/Exercise'; import Exercise from '../../../sharedByClients/models/Exercise';
class ExerciseCreateCommand extends CommanderCommand { class ExerciseCreateCommand extends CommanderCommand {
...@@ -40,8 +40,7 @@ class ExerciseCreateCommand extends CommanderCommand { ...@@ -40,8 +40,7 @@ class ExerciseCreateCommand extends CommanderCommand {
ora('Checking assignment:').start().info(); ora('Checking assignment:').start().info();
const assignmentGetSpinner: ora.Ora = ora({ const assignmentGetSpinner: ora.Ora = ora({
text : 'Checking if assignment exists', text: 'Checking if assignment exists', indent: 4
indent: 4
}).start(); }).start();
assignment = await DojoBackendManager.getAssignment(options.assignment); assignment = await DojoBackendManager.getAssignment(options.assignment);
if ( !assignment ) { if ( !assignment ) {
...@@ -51,8 +50,7 @@ class ExerciseCreateCommand extends CommanderCommand { ...@@ -51,8 +50,7 @@ class ExerciseCreateCommand extends CommanderCommand {
assignmentGetSpinner.succeed(`Assignment "${ options.assignment }" exists`); assignmentGetSpinner.succeed(`Assignment "${ options.assignment }" exists`);
const assignmentPublishedSpinner: ora.Ora = ora({ const assignmentPublishedSpinner: ora.Ora = ora({
text : 'Checking if assignment is published', text: 'Checking if assignment is published', indent: 4
indent: 4
}).start(); }).start();
if ( !assignment.published ) { if ( !assignment.published ) {
assignmentPublishedSpinner.fail(`Assignment "${ assignment.name }" isn't published`); assignmentPublishedSpinner.fail(`Assignment "${ assignment.name }" isn't published`);
...@@ -70,8 +68,7 @@ class ExerciseCreateCommand extends CommanderCommand { ...@@ -70,8 +68,7 @@ class ExerciseCreateCommand extends CommanderCommand {
const oraInfo = (message: string) => { const oraInfo = (message: string) => {
ora({ ora({
text : message, text: message, indent: 4
indent: 4
}).start().info(); }).start().info();
}; };
......
import CommanderCommand from '../CommanderCommand'; import CommanderCommand from '../../CommanderCommand';
import Config from '../../config/Config'; import Config from '../../../config/Config';
import fs from 'node:fs'; import fs from 'node:fs';
import ora from 'ora'; import ora from 'ora';
import util from 'util'; import util from 'util';
...@@ -7,13 +7,13 @@ import { exec } from 'child_process'; ...@@ -7,13 +7,13 @@ import { exec } from 'child_process';
import chalk from 'chalk'; import chalk from 'chalk';
import * as os from 'os'; import * as os from 'os';
import path from 'path'; import path from 'path';
import ClientsSharedConfig from '../../sharedByClients/config/ClientsSharedConfig'; import ClientsSharedConfig from '../../../sharedByClients/config/ClientsSharedConfig';
import AssignmentFile from '../../shared/types/Dojo/AssignmentFile'; import AssignmentFile from '../../../shared/types/Dojo/AssignmentFile';
import ExerciseDockerCompose from '../../sharedByClients/helpers/Dojo/ExerciseDockerCompose'; import ExerciseDockerCompose from '../../../sharedByClients/helpers/Dojo/ExerciseDockerCompose';
import SharedAssignmentHelper from '../../shared/helpers/Dojo/SharedAssignmentHelper'; import SharedAssignmentHelper from '../../../shared/helpers/Dojo/SharedAssignmentHelper';
import ExerciseCheckerError from '../../shared/types/Dojo/ExerciseCheckerError'; import ExerciseCheckerError from '../../../shared/types/Dojo/ExerciseCheckerError';
import ClientsSharedExerciseHelper from '../../sharedByClients/helpers/Dojo/ClientsSharedExerciseHelper'; import ClientsSharedExerciseHelper from '../../../sharedByClients/helpers/Dojo/ClientsSharedExerciseHelper';
import ExerciseResultsSanitizerAndValidator from '../../sharedByClients/helpers/Dojo/ExerciseResultsSanitizerAndValidator'; import ExerciseResultsSanitizerAndValidator from '../../../sharedByClients/helpers/Dojo/ExerciseResultsSanitizerAndValidator';
const execAsync = util.promisify(exec); const execAsync = util.promisify(exec);
...@@ -42,8 +42,7 @@ class ExerciseRunCommand extends CommanderCommand { ...@@ -42,8 +42,7 @@ class ExerciseRunCommand extends CommanderCommand {
private displayExecutionLogs() { private displayExecutionLogs() {
ora({ ora({
text : `${ chalk.magenta('Execution logs folder:') } ${ this.folderResultsVolume }`, text: `${ chalk.magenta('Execution logs folder:') } ${ this.folderResultsVolume }`, indent: 0
indent: 0
}).start().info(); }).start().info();
} }
...@@ -67,15 +66,13 @@ class ExerciseRunCommand extends CommanderCommand { ...@@ -67,15 +66,13 @@ class ExerciseRunCommand extends CommanderCommand {
ora({ ora({
text : `Checking exercise content:`, text: `Checking exercise content:`, indent: 4
indent: 4
}).start().info(); }).start().info();
// Exercise folder // Exercise folder
{ {
const spinner: ora.Ora = ora({ const spinner: ora.Ora = ora({
text : `Checking exercise folder`, text: `Checking exercise folder`, indent: 8
indent: 8
}).start(); }).start();
const files = fs.readdirSync(options.path); const files = fs.readdirSync(options.path);
...@@ -92,8 +89,7 @@ class ExerciseRunCommand extends CommanderCommand { ...@@ -92,8 +89,7 @@ class ExerciseRunCommand extends CommanderCommand {
// dojo_assignment.json validity // dojo_assignment.json validity
{ {
const spinner: ora.Ora = ora({ const spinner: ora.Ora = ora({
text : `Checking ${ ClientsSharedConfig.assignment.filename } file`, text: `Checking ${ ClientsSharedConfig.assignment.filename } file`, indent: 8
indent: 8
}).start(); }).start();
const validationResults = SharedAssignmentHelper.validateDescriptionFile(path.join(options.path, ClientsSharedConfig.assignment.filename)); const validationResults = SharedAssignmentHelper.validateDescriptionFile(path.join(options.path, ClientsSharedConfig.assignment.filename));
...@@ -112,8 +108,7 @@ class ExerciseRunCommand extends CommanderCommand { ...@@ -112,8 +108,7 @@ class ExerciseRunCommand extends CommanderCommand {
// Docker daemon // Docker daemon
{ {
const spinner: ora.Ora = ora({ const spinner: ora.Ora = ora({
text : `Checking Docker daemon`, text: `Checking Docker daemon`, indent: 4
indent: 4
}).start(); }).start();
try { try {
...@@ -157,8 +152,7 @@ class ExerciseRunCommand extends CommanderCommand { ...@@ -157,8 +152,7 @@ class ExerciseRunCommand extends CommanderCommand {
exerciseDockerCompose.events.on('step', (name: string, message: string) => { exerciseDockerCompose.events.on('step', (name: string, message: string) => {
spinner = ora({ spinner = ora({
text : message, text: message, indent: 4
indent: 4
}).start(); }).start();
if ( options.verbose && name == 'COMPOSE_RUN' ) { if ( options.verbose && name == 'COMPOSE_RUN' ) {
...@@ -170,8 +164,7 @@ class ExerciseRunCommand extends CommanderCommand { ...@@ -170,8 +164,7 @@ class ExerciseRunCommand extends CommanderCommand {
if ( error ) { if ( error ) {
if ( options.verbose && stepName == 'COMPOSE_RUN' ) { if ( options.verbose && stepName == 'COMPOSE_RUN' ) {
ora({ ora({
text : message, text: message, indent: 4
indent: 4
}).start().fail(); }).start().fail();
} else { } else {
spinner.fail(message); spinner.fail(message);
...@@ -179,8 +172,7 @@ class ExerciseRunCommand extends CommanderCommand { ...@@ -179,8 +172,7 @@ class ExerciseRunCommand extends CommanderCommand {
} else { } else {
if ( options.verbose && stepName == 'COMPOSE_RUN' ) { if ( options.verbose && stepName == 'COMPOSE_RUN' ) {
ora({ ora({
text : message, text: message, indent: 4
indent: 4
}).start().succeed(); }).start().succeed();
} else { } else {
spinner.succeed(message); spinner.succeed(message);
...@@ -218,8 +210,7 @@ class ExerciseRunCommand extends CommanderCommand { ...@@ -218,8 +210,7 @@ class ExerciseRunCommand extends CommanderCommand {
exerciseResultsValidation.events.on('step', (name: string, message: string) => { exerciseResultsValidation.events.on('step', (name: string, message: string) => {
spinner = ora({ spinner = ora({
text : message, text: message, indent: 4
indent: 4
}).start(); }).start();
}); });
...@@ -251,9 +242,7 @@ class ExerciseRunCommand extends CommanderCommand { ...@@ -251,9 +242,7 @@ class ExerciseRunCommand extends CommanderCommand {
// Step 4: Display results + Volume location // Step 4: Display results + Volume location
{ {
ClientsSharedExerciseHelper.displayExecutionResults(exerciseResultsValidation.exerciseResults!, exerciseDockerCompose.exitCode, { ClientsSharedExerciseHelper.displayExecutionResults(exerciseResultsValidation.exerciseResults!, exerciseDockerCompose.exitCode, {
INFO : chalk.bold, INFO: chalk.bold, SUCCESS: chalk.green, FAILURE: chalk.red
SUCCESS: chalk.green,
FAILURE: chalk.red
}, `\n\n${ chalk.bold('Execution results folder') } : ${ this.folderResultsVolume }`); }, `\n\n${ chalk.bold('Execution results folder') } : ${ this.folderResultsVolume }`);
} }
} }
......
import CommanderCommand from '../CommanderCommand'; import CommanderCommand from '../CommanderCommand';
import SessionTestCommand from './SessionTestCommand'; import SessionTestCommand from './subcommands/SessionTestCommand';
import SessionAppCommand from './App/SessionAppCommand'; import SessionAppCommand from './subcommands/SessionAppCommand';
import SessionGitlabCommand from './Gitlab/SessionGitlabCommand'; import SessionGitlabCommand from './subcommands/SessionGitlabCommand';
class SessionCommand extends CommanderCommand { class SessionCommand extends CommanderCommand {
......
import CommanderCommand from '../../CommanderCommand'; import CommanderCommand from '../../CommanderCommand';
import SessionAppLoginCommand from './SessionAppLoginCommand'; import SessionAppLoginCommand from './application/SessionAppLoginCommand';
import SessionAppLogoutCommand from './SessionAppLogoutCommand'; import SessionAppLogoutCommand from './application/SessionAppLogoutCommand';
class SessionAppCommand extends CommanderCommand { class SessionAppCommand extends CommanderCommand {
......
import CommanderCommand from '../../CommanderCommand'; import CommanderCommand from '../../CommanderCommand';
import SessionGitlabLoginCommand from './SessionGitlabLoginCommand'; import SessionGitlabLoginCommand from './gitlab/SessionGitlabLoginCommand';
import SessionGitlabLogoutCommand from './SessionGitlabLogoutCommand'; import SessionGitlabLogoutCommand from './gitlab/SessionGitlabLogoutCommand';
class SessionGitlabCommand extends CommanderCommand { class SessionGitlabCommand extends CommanderCommand {
......
import CommanderCommand from '../CommanderCommand'; import CommanderCommand from '../../CommanderCommand';
import SessionManager from '../../managers/SessionManager'; import SessionManager from '../../../managers/SessionManager';
import GitlabManager from '../../managers/GitlabManager'; import GitlabManager from '../../../managers/GitlabManager';
class SessionTestCommand extends CommanderCommand { class SessionTestCommand extends CommanderCommand {
......
import chalk from 'chalk'; import chalk from 'chalk';
import CommanderCommand from '../../CommanderCommand'; import CommanderCommand from '../../../CommanderCommand';
import inquirer from 'inquirer'; import inquirer from 'inquirer';
import SessionManager from '../../../managers/SessionManager'; import SessionManager from '../../../../managers/SessionManager';
class SessionAppLoginCommand extends CommanderCommand { class SessionAppLoginCommand extends CommanderCommand {
...@@ -18,10 +18,7 @@ class SessionAppLoginCommand extends CommanderCommand { ...@@ -18,10 +18,7 @@ class SessionAppLoginCommand extends CommanderCommand {
protected async commandAction(options: { user: string, password: string }): Promise<void> { protected async commandAction(options: { user: string, password: string }): Promise<void> {
if ( !options.password ) { if ( !options.password ) {
options.password = (await inquirer.prompt({ options.password = (await inquirer.prompt({
type : 'password', type: 'password', name: 'password', message: 'Please enter your password', mask: ''
name : 'password',
message: 'Please enter your password',
mask : ''
})).password; })).password;
} }
......
import CommanderCommand from '../../CommanderCommand'; import CommanderCommand from '../../../CommanderCommand';
import inquirer from 'inquirer'; import inquirer from 'inquirer';
import SessionManager from '../../../managers/SessionManager'; import SessionManager from '../../../../managers/SessionManager';
import ora from 'ora'; import ora from 'ora';
...@@ -17,10 +17,7 @@ class SessionAppLogoutCommand extends CommanderCommand { ...@@ -17,10 +17,7 @@ class SessionAppLogoutCommand extends CommanderCommand {
protected async commandAction(options: any): Promise<void> { protected async commandAction(options: any): Promise<void> {
if ( !options.force ) { if ( !options.force ) {
const confirm: boolean = (await inquirer.prompt({ const confirm: boolean = (await inquirer.prompt({
name : 'confirm', name: 'confirm', message: 'Are you sure?', type: 'confirm', default: false
message: 'Are you sure?',
type : 'confirm',
default: false
})).confirm; })).confirm;
if ( !confirm ) { if ( !confirm ) {
......
import chalk from 'chalk'; import chalk from 'chalk';
import CommanderCommand from '../../CommanderCommand'; import CommanderCommand from '../../../CommanderCommand';
import GitlabManager from '../../../managers/GitlabManager'; import GitlabManager from '../../../../managers/GitlabManager';
import inquirer from 'inquirer'; import inquirer from 'inquirer';
...@@ -17,10 +17,7 @@ class SessionGitlabLoginCommand extends CommanderCommand { ...@@ -17,10 +17,7 @@ class SessionGitlabLoginCommand extends CommanderCommand {
protected async commandAction(options: { token: string }): Promise<void> { protected async commandAction(options: { token: string }): Promise<void> {
if ( !options.token ) { if ( !options.token ) {
options.token = (await inquirer.prompt({ options.token = (await inquirer.prompt({
type : 'password', type: 'password', name: 'token', message: 'Please enter your gitlab token', mask: ''
name : 'token',
message: 'Please enter your gitlab token',
mask : ''
})).token; })).token;
} }
......
import CommanderCommand from '../../CommanderCommand'; import CommanderCommand from '../../../CommanderCommand';
import inquirer from 'inquirer'; import inquirer from 'inquirer';
import ora from 'ora'; import ora from 'ora';
import GitlabManager from '../../../managers/GitlabManager'; import GitlabManager from '../../../../managers/GitlabManager';
class SessionGitlabLogoutCommand extends CommanderCommand { class SessionGitlabLogoutCommand extends CommanderCommand {
...@@ -17,10 +17,7 @@ class SessionGitlabLogoutCommand extends CommanderCommand { ...@@ -17,10 +17,7 @@ class SessionGitlabLogoutCommand extends CommanderCommand {
protected async commandAction(options: any): Promise<void> { protected async commandAction(options: any): Promise<void> {
if ( !options.force ) { if ( !options.force ) {
const confirm: boolean = (await inquirer.prompt({ const confirm: boolean = (await inquirer.prompt({
name : 'confirm', name: 'confirm', message: 'Are you sure?', type: 'confirm', default: false
message: 'Are you sure?',
type : 'confirm',
default: false
})).confirm; })).confirm;
if ( !confirm ) { if ( !confirm ) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment