66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
/* eslint-disable no-undef */
|
|
import path from 'path';
|
|
import { spawnSync } from 'child_process';
|
|
import { readdirSync, fileTypeSync, writeSync } from './file.js';
|
|
|
|
export default class CFPages {
|
|
#uploadPath = path.join(__projectRoot, __config.folder.operator_data);
|
|
#gitignorePath = path.join(__projectRoot, '.gitignore');
|
|
|
|
constructor() {
|
|
|
|
}
|
|
|
|
upload() {
|
|
const tree = this.#generateDirTree(this.#uploadPath);
|
|
writeSync(JSON.stringify(tree, null), path.join(this.#uploadPath, 'index.json'));
|
|
const wrangler = spawnSync('pnpm', ['wrangler', 'pages', 'deploy', this.#uploadPath]);
|
|
|
|
console.log('error', wrangler.error);
|
|
console.log('stdout ', wrangler.stdout.toString());
|
|
console.log('stderr ', wrangler.stderr.toString());
|
|
}
|
|
|
|
download() {
|
|
|
|
}
|
|
|
|
#generateDirTree(dir) {
|
|
const files = readdirSync(dir);
|
|
let tree = {
|
|
name: path.basename(dir),
|
|
type: 'dir',
|
|
children: []
|
|
};
|
|
for (const file of files) {
|
|
if (this.#isToIgnore(file)) {
|
|
continue;
|
|
}
|
|
const filePath = path.join(dir, file);
|
|
const dirType = fileTypeSync(filePath);
|
|
if (dirType === 'dir') {
|
|
tree.children.push(this.#generateDirTree(filePath))
|
|
} else {
|
|
tree.children.push({
|
|
name: file,
|
|
type: 'file'
|
|
});
|
|
}
|
|
}
|
|
if (tree.children.length === 0) {
|
|
return null;
|
|
}
|
|
return tree
|
|
}
|
|
|
|
// TODO
|
|
#isToIgnore(file) {
|
|
switch (file) {
|
|
case '.DS_Store':
|
|
case 'index.json':
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
} |