Skip to content
Snippets Groups Projects
Commit d5c892f0 authored by kelly.nguyen's avatar kelly.nguyen
Browse files

add function for archive a repo

parent 518d48c0
Branches
No related tags found
No related merge requests found
Pipeline #33278 failed
......@@ -8,7 +8,7 @@ import logger
import { AccessLevel, EditProjectOptions, ProjectVariableSchema, ProtectedBranchAccessLevel, ProtectedBranchSchema } from '@gitbeaker/core';
import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode.js';
import SharedGitlabManager from '../shared/managers/SharedGitlabManager.js';
import * as fs from 'fs';
class GitlabManager extends SharedGitlabManager {
constructor() {
......@@ -268,11 +268,22 @@ class GitlabManager extends SharedGitlabManager {
}
}
async exportRepository(repoId: number, extension: ArchiveType): Promise<Blob> {
async exportRepository(repoId: number) : Promise<Blob>{
try {
return await this.api.Repositories.showArchive(repoId, {
fileType: extension
this.api.Repositories.showArchive(repoId).then(async archive => {
const buffer = Buffer.from(await archive.arrayBuffer());
fs.writeFile('repository-archive.tar.gz', buffer, (err) => {
if (err) {
console.error('Error saving archive:', err);
} else {
console.log('Archive saved successfully!');
}
});
}).catch(error => {
console.error('Error fetching archive:', error);
});
return await this.api.Repositories.showArchive(repoId);
} catch ( e ) {
logger.error(JSON.stringify(e));
return Promise.reject(e);
......
......@@ -302,9 +302,8 @@ class AssignmentRoutes implements RoutesManager {
}
private async exportAssignment(req: express.Request, res: express.Response) {
let ext : Gitlab.ArchiveType = 'zip';
await GitlabManager.exportRepository(req.boundParams.assignment!.gitlabId, ext);
return req.session.sendResponse(res, StatusCodes.OK);
const resDl = await GitlabManager.exportRepository(req.boundParams.assignment!.gitlabId);
return req.session.sendResponse(res, StatusCodes.OK, resDl);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment