diff --git a/NodeApp/src/commander/assignment/subcommands/AssignmentPublishUnpublishCommandBase.ts b/NodeApp/src/commander/assignment/subcommands/AssignmentPublishUnpublishCommandBase.ts index b82805174b5e8b177f475086d752ce440161deeb..2c225445e524bb4b5611062aa9230e1eed2f24e4 100644 --- a/NodeApp/src/commander/assignment/subcommands/AssignmentPublishUnpublishCommandBase.ts +++ b/NodeApp/src/commander/assignment/subcommands/AssignmentPublishUnpublishCommandBase.ts @@ -1,10 +1,11 @@ -import CommanderCommand from '../../CommanderCommand'; -import inquirer from 'inquirer'; -import chalk from 'chalk'; -import SessionManager from '../../../managers/SessionManager'; -import ora from 'ora'; -import DojoBackendManager from '../../../managers/DojoBackendManager'; -import Assignment from '../../../sharedByClients/models/Assignment'; +import CommanderCommand from '../../CommanderCommand'; +import inquirer from 'inquirer'; +import chalk from 'chalk'; +import SessionManager from '../../../managers/SessionManager'; +import ora from 'ora'; +import DojoBackendManager from '../../../managers/DojoBackendManager'; +import Assignment from '../../../sharedByClients/models/Assignment'; +import SharedAssignmentHelper from '../../../shared/helpers/Dojo/SharedAssignmentHelper'; abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand { @@ -21,7 +22,9 @@ abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand { protected async commandAction(assignmentNameOrUrl: string, options: { force: boolean }): Promise<void> { if ( !options.force ) { options.force = (await inquirer.prompt({ - 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?' + 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?' })).force; } @@ -40,10 +43,12 @@ abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand { ora('Checking assignment:').start().info(); ora({ - text: assignmentNameOrUrl, indent: 4 + text : assignmentNameOrUrl, + indent: 4 }).start().info(); const assignmentGetSpinner: ora.Ora = ora({ - text: 'Checking if assignment exists', indent: 8 + text : 'Checking if assignment exists', + indent: 8 }).start(); assignment = await DojoBackendManager.getAssignment(assignmentNameOrUrl); if ( !assignment ) { @@ -52,6 +57,7 @@ abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand { } assignmentGetSpinner.succeed(`The assignment exists`); + const assignmentCheckAccessSpinner: ora.Ora = ora({ text: 'Checking accesses', indent: 8 }).start(); @@ -60,6 +66,18 @@ abstract class AssignmentPublishUnpublishCommandBase extends CommanderCommand { return; } assignmentCheckAccessSpinner.succeed(`You are in the staff of this assignment`); + + + const assignmentIsPublishable: ora.Ora = ora({ + text : 'Checking if the assignment is publishable', + indent: 8 + }).start(); + const isPublishable = await SharedAssignmentHelper.isPublishable(assignment.gitlabId); + if ( !isPublishable.isPublishable ) { + assignmentIsPublishable.fail(`The assignment is not publishable: ${ isPublishable.status?.message }`); + return; + } + assignmentIsPublishable.succeed(`The assignment is publishable`); } {