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

ExerciseInfoCommand => Add command to get info of an exercise

parent 39cac1b0
No related branches found
No related tags found
No related merge requests found
...@@ -3,8 +3,8 @@ import ExerciseCreateCommand from './subcommands/ExerciseCreateCommand.js'; ...@@ -3,8 +3,8 @@ import ExerciseCreateCommand from './subcommands/ExerciseCreateCommand.js';
import ExerciseRunCommand from './subcommands/ExerciseRunCommand.js'; import ExerciseRunCommand from './subcommands/ExerciseRunCommand.js';
import ExerciseCorrectionCommand from './subcommands/ExerciseCorrectionCommand.js'; import ExerciseCorrectionCommand from './subcommands/ExerciseCorrectionCommand.js';
import ExerciseDeleteCommand from './subcommands/ExerciseDeleteCommand'; import ExerciseDeleteCommand from './subcommands/ExerciseDeleteCommand';
import ExerciseListCommand from "./subcommands/ExerciseListCommand"; import ExerciseSearchCommand from './subcommands/ExerciseSearchCommand';
import ExerciseResultCommand from "./subcommands/ExerciseResultCommand"; import ExerciseInfoCommand from './subcommands/ExerciseInfoCommand';
import ExerciseSummaryCommand from "./subcommands/ExerciseSummaryCommand"; import ExerciseSummaryCommand from "./subcommands/ExerciseSummaryCommand";
...@@ -22,7 +22,7 @@ class ExerciseCommand extends CommanderCommand { ...@@ -22,7 +22,7 @@ class ExerciseCommand extends CommanderCommand {
ExerciseDeleteCommand.registerOnCommand(this.command); ExerciseDeleteCommand.registerOnCommand(this.command);
ExerciseCorrectionCommand.registerOnCommand(this.command); ExerciseCorrectionCommand.registerOnCommand(this.command);
ExerciseListCommand.registerOnCommand(this.command); ExerciseListCommand.registerOnCommand(this.command);
ExerciseResultCommand.registerOnCommand(this.command); ExerciseInfoCommand.registerOnCommand(this.command);
ExerciseSummaryCommand.registerOnCommand(this.command); ExerciseSummaryCommand.registerOnCommand(this.command);
} }
......
import CommanderCommand from '../../CommanderCommand';
import AccessesHelper from '../../../helpers/AccessesHelper';
import TextStyle from '../../../types/TextStyle';
import ExerciseHelper from '../../../helpers/Dojo/ExerciseHelper';
import Exercise from '../../../sharedByClients/models/Exercise';
import DojoBackendManager from '../../../managers/DojoBackendManager';
import ora from 'ora';
import Config from '../../../config/Config';
class ExerciseInfoCommand extends CommanderCommand {
protected commandName: string = 'info';
protected defineCommand(): void {
this.command
.description('delete an exercise')
.argument('id or url', 'id or url of the exercise')
.action(this.commandAction.bind(this));
}
private async dataRetrieval(exerciseIdOrUrl: string): Promise<Exercise> {
console.log(TextStyle.BLOCK('Please wait while we verify and retrieve data...'));
await AccessesHelper.checkStudent();
// Fetch exercise
const exercisesGetSpinner: ora.Ora = ora({
text : `Checking exercise`,
indent: 4
}).start();
const exercise = await DojoBackendManager.getExercise(exerciseIdOrUrl);
if ( !exercise ) {
exercisesGetSpinner.fail(`Exercise not found`);
throw new Error();
}
exercisesGetSpinner.succeed(`Exercise fetched successfully`);
return exercise;
}
protected async commandAction(exerciseIdOrUrl: string): Promise<void> {
try {
const exercise = await this.dataRetrieval(exerciseIdOrUrl);
return ExerciseHelper.displayDetails(exercise, Config.interactiveMode);
} catch ( e ) { /* Do nothing */ }
}
}
export default new ExerciseInfoCommand();
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment