You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.2 KiB
JavaScript
59 lines
1.2 KiB
JavaScript
class Model {
|
|
constructor(http) {
|
|
// Initialize isomorphic-git with a file system
|
|
window.fs = new LightningFS("fs");
|
|
// I prefer using the Promisified version honestly
|
|
window.pfs = window.fs.promises;
|
|
|
|
window.dir = "/";
|
|
|
|
window.http = http;
|
|
}
|
|
|
|
async dirList(dir = "/") {
|
|
let list = await pfs.readdir(dir);
|
|
|
|
for (let u = 0; u < list.length; u++) {
|
|
let re = /^\..*$/;
|
|
|
|
if (re.test(list[u])) {
|
|
list.splice(u, 1);
|
|
u--;
|
|
}
|
|
}
|
|
|
|
let dirtree = [dir];
|
|
|
|
for (let i = 0; i < list.length; i++) {
|
|
dirtree[i + 1] = list[i];
|
|
let itemStat = await pfs.stat(dirtree[0] + dirtree[i + 1]);
|
|
if (itemStat.isDirectory()) {
|
|
dirtree[i + 1] = await this.dirList(dirtree[0] + dirtree[i + 1] + "/");
|
|
}
|
|
}
|
|
|
|
return dirtree;
|
|
}
|
|
|
|
async dirTree(dir = "/") {
|
|
var tree = await this.dirList(dir);
|
|
|
|
return tree;
|
|
}
|
|
|
|
purgeFS() {
|
|
delete window.fs;
|
|
window.fs = new LightningFS("fs", { wipe: true });
|
|
}
|
|
|
|
async cloneRep() {
|
|
await git.clone({
|
|
fs,
|
|
http,
|
|
dir,
|
|
url: "https://git.microlab.space/microlab/website.git",
|
|
corsProxy: "https://cors.isomorphic-git.org",
|
|
});
|
|
}
|
|
}
|