提交subgame插件
This commit is contained in:
120
dist/utils/FileUtils.js
vendored
Normal file
120
dist/utils/FileUtils.js
vendored
Normal file
@@ -0,0 +1,120 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const fs_1 = __importDefault(require("fs"));
|
||||
const path_1 = __importDefault(require("path"));
|
||||
const archiver_1 = __importDefault(require("archiver"));
|
||||
var FileUtils;
|
||||
(function (FileUtils) {
|
||||
function copy(srcFileOrDir, destFileOrDir) {
|
||||
if (!fs_1.default.existsSync(srcFileOrDir))
|
||||
return;
|
||||
const stat = fs_1.default.statSync(srcFileOrDir);
|
||||
if (stat.isDirectory()) {
|
||||
mkdir(destFileOrDir);
|
||||
const files = fs_1.default.readdirSync(srcFileOrDir);
|
||||
files.forEach(item => copy(path_1.default.join(srcFileOrDir, item), path_1.default.join(destFileOrDir, item)));
|
||||
}
|
||||
else {
|
||||
mkdir(path_1.default.dirname(destFileOrDir));
|
||||
fs_1.default.copyFileSync(srcFileOrDir, destFileOrDir);
|
||||
}
|
||||
}
|
||||
FileUtils.copy = copy;
|
||||
function mkdir(dir) {
|
||||
if (fs_1.default.existsSync(dir))
|
||||
return;
|
||||
let parentDir = path_1.default.dirname(dir);
|
||||
mkdir(parentDir);
|
||||
fs_1.default.mkdirSync(dir);
|
||||
}
|
||||
FileUtils.mkdir = mkdir;
|
||||
function rm(fileOrDir) {
|
||||
if (!fs_1.default.existsSync(fileOrDir))
|
||||
return;
|
||||
const stat = fs_1.default.statSync(fileOrDir);
|
||||
if (stat.isDirectory()) {
|
||||
const files = fs_1.default.readdirSync(fileOrDir);
|
||||
files.forEach(item => rm(path_1.default.join(fileOrDir, item)));
|
||||
fs_1.default.rmdirSync(fileOrDir);
|
||||
}
|
||||
else {
|
||||
fs_1.default.unlinkSync(fileOrDir);
|
||||
}
|
||||
}
|
||||
FileUtils.rm = rm;
|
||||
function find(dir, nameOrRegExp, deepFind = false) {
|
||||
if (!fs_1.default.existsSync(dir))
|
||||
return null;
|
||||
const files = fs_1.default.readdirSync(dir);
|
||||
const check = typeof nameOrRegExp === 'string' ? (value) => value === nameOrRegExp : (value) => nameOrRegExp.test(value);
|
||||
for (const file of files) {
|
||||
const fullPath = path_1.default.join(dir, file);
|
||||
const stat = fs_1.default.statSync(fullPath);
|
||||
if (!stat.isDirectory()) {
|
||||
if (check(file))
|
||||
return fullPath;
|
||||
}
|
||||
else if (deepFind) {
|
||||
const result = find(fullPath, nameOrRegExp);
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
FileUtils.find = find;
|
||||
function fileCount(dir, includeFolder = false) {
|
||||
if (!fs_1.default.existsSync(dir))
|
||||
return 0;
|
||||
const stat = fs_1.default.statSync(dir);
|
||||
if (!stat.isDirectory()) {
|
||||
return 1;
|
||||
}
|
||||
let count = includeFolder ? 1 : 0;
|
||||
const files = fs_1.default.readdirSync(dir);
|
||||
files.forEach(item => count += fileCount(path_1.default.join(dir, item)));
|
||||
return count;
|
||||
}
|
||||
FileUtils.fileCount = fileCount;
|
||||
function checkFileNameIndex(fileFullPath, indexGen = index => `(${index})`) {
|
||||
if (!fs_1.default.existsSync(fileFullPath))
|
||||
return fileFullPath;
|
||||
const extname = path_1.default.extname(fileFullPath);
|
||||
const basename = path_1.default.basename(fileFullPath, extname);
|
||||
const dirname = path_1.default.dirname(fileFullPath);
|
||||
let i = 1;
|
||||
let limit = 1000;
|
||||
while (limit-- > 0) {
|
||||
const newPath = path_1.default.join(dirname, `${basename}${indexGen(i)}${extname}`);
|
||||
if (!fs_1.default.existsSync(newPath))
|
||||
return newPath;
|
||||
i++;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
FileUtils.checkFileNameIndex = checkFileNameIndex;
|
||||
function zipdir(srcDir, outputFile) {
|
||||
mkdir(path_1.default.dirname(outputFile));
|
||||
var promise = new Promise((resolve, reject) => {
|
||||
const writeStream = fs_1.default.createWriteStream(outputFile);
|
||||
const archive = (0, archiver_1.default)('zip', {
|
||||
zlib: { level: 9 }
|
||||
});
|
||||
writeStream.on('close', () => {
|
||||
resolve();
|
||||
});
|
||||
archive.on('error', function (error) {
|
||||
reject(error);
|
||||
});
|
||||
archive.pipe(writeStream);
|
||||
archive.directory(srcDir, false);
|
||||
archive.finalize();
|
||||
});
|
||||
return promise;
|
||||
}
|
||||
FileUtils.zipdir = zipdir;
|
||||
})(FileUtils || (FileUtils = {}));
|
||||
exports.default = FileUtils;
|
||||
Reference in New Issue
Block a user