snapcube
Version:
📦 Snapshot, backup, and restore any project — binary-safe, fast, and simple CLI.
42 lines • 1.77 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getGitlabFiles = void 0;
const rest_1 = require("@gitbeaker/rest");
const isBinaryFile_1 = require("../utils/isBinaryFile");
const path_1 = require("path");
const getGitlabFiles = async (repository, branch, options) => {
const api = new rest_1.Gitlab({ host: "https://gitlab.com", token: options?.token });
const files = [];
const tree = await api.Repositories.allRepositoryTrees(repository, {
recursive: true,
ref: branch,
});
const gitlabFiles = tree.filter((file) => file.type === "blob");
for (const file of gitlabFiles) {
if (options?.structureOnly)
files.push(file.path);
else {
const isBinary = (0, isBinaryFile_1.isBinaryFile)(file.name);
let content = null;
if (!(options?.ignoreAll || (options?.ignoreBinaries && isBinary))) {
const schema = await api.RepositoryFiles.show(repository, file.path, branch);
content = isBinary
? schema.content
: Buffer.from(schema.content, "base64").toString("utf-8");
}
const filePath = (0, path_1.dirname)(file.path);
files.push({
fileName: file.name,
filePath: `${repository.split("/")[1]}${filePath === "." ? "" : `/${filePath}`}`,
content: file.type === "blob"
? content
: Buffer.from(content, "base64").toString("utf-8"),
isBinary,
encoding: isBinary ? "base64" : "utf-8",
});
}
}
return files;
};
exports.getGitlabFiles = getGitlabFiles;
//# sourceMappingURL=getGitlabFiles.js.map
;