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

AssignmentHelper => Add function to test if and assignment is publishable

parent cb40b62d
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,10 @@ import Ajv, { ErrorObject, JTDSchemaType } from 'ajv/dist/jtd'; ...@@ -2,6 +2,10 @@ import Ajv, { ErrorObject, JTDSchemaType } from 'ajv/dist/jtd';
import fs from 'fs'; import fs from 'fs';
import JSON5 from 'json5'; import JSON5 from 'json5';
import AssignmentFile from '../../types/Dojo/AssignmentFile'; import AssignmentFile from '../../types/Dojo/AssignmentFile';
import GitlabManager from '../../../managers/GitlabManager';
import GitlabPipelineStatus from '../../types/Gitlab/GitlabPipelineStatus';
import DojoStatusCode from '../../types/Dojo/DojoStatusCode';
import GitlabPipeline from '../../types/Gitlab/GitlabPipeline';
class SharedAssignmentHelper { class SharedAssignmentHelper {
...@@ -69,6 +73,37 @@ class SharedAssignmentHelper { ...@@ -69,6 +73,37 @@ class SharedAssignmentHelper {
}; };
} }
} }
async isPublishable(repositoryId: number): Promise<{ isPublishable: boolean, lastPipeline: GitlabPipeline | null, status?: { code: DojoStatusCode, message: string } }> {
const pipelines = await GitlabManager.getRepositoryPipelines(repositoryId, 'main');
if ( pipelines.length > 0 ) {
const lastPipeline = pipelines[0];
if ( lastPipeline.status != GitlabPipelineStatus.SUCCESS ) {
return {
isPublishable: false,
lastPipeline : pipelines[0],
status : {
code : DojoStatusCode.ASSIGNMENT_PUBLISH_PIPELINE_FAILED,
message: 'Last pipeline status is not "success".'
}
};
} else {
return {
isPublishable: true,
lastPipeline : pipelines[0]
};
}
} else {
return {
isPublishable: false,
lastPipeline : null,
status : {
code : DojoStatusCode.ASSIGNMENT_PUBLISH_NO_PIPELINE,
message: 'No pipeline found for this assignment.'
}
};
}
}
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment