fix: fs.uninkSync returns before remove finish

This commit is contained in:
shanmite 2022-10-31 11:34:16 +08:00
parent bfc8fb6a14
commit 8e77afadc3
3 changed files with 18 additions and 38 deletions

View File

@ -289,12 +289,12 @@ class Monitor extends Searcher {
if (lottery_param[0] !== "APIs" && save_lottery_info_to_file && protoLotteryInfo.length) {
log.info("保存抽奖信息", "保存开始")
appendLotteryInfoFile(lottery_param[1].toString(), protoLotteryInfo)
await appendLotteryInfoFile(lottery_param[1].toString(), protoLotteryInfo)
}
if (lottery_param[0] !== "APIs" && set_lottery_info_url && protoLotteryInfo.length) {
log.info("上传抽奖信息", "上传开始")
new Promise((resolve) => {
await new Promise((resolve) => {
send({
url: set_lottery_info_url,
method: "POST",

View File

@ -370,25 +370,6 @@ const utils = {
})
});
},
/**
* deleteFolderRecursive
* @param {*} url
*/
deleteFolderRecursive(url) {
var files = [];
if (fs.existsSync(url)) {
files = fs.readdirSync(url);
files.forEach(function (file) {
var curPath = path.join(url, file);
if (fs.statSync(curPath).isDirectory()) {
utils.deleteFolderRecursive(curPath);
} else {
fs.unlinkSync(curPath);
}
});
fs.rmdirSync(url);
}
},
/**
* 读取dyid文件
* @param {number} num
@ -413,23 +394,20 @@ const utils = {
* @param {import("./core/searcher").LotteryInfo[]} lottery_info
* @return {Promise<void>}
*/
appendLotteryInfoFile(from, lottery_info) {
async appendLotteryInfoFile(from, lottery_info) {
let all_lottery_info = {};
try {
all_lottery_info = utils.strToJson(fs.readFileSync(path.join(utils.lottery_info_dir, `lottery_info_${Number(process.env.NUMBER)}.json`)).toString())
} catch (_) {
all_lottery_info = {}
}
utils
.createDir(utils.lottery_info_dir)
.then(() => {
if (all_lottery_info[from] instanceof Array) {
all_lottery_info[from].push(...lottery_info)
} else {
all_lottery_info[from] = lottery_info
}
utils.createFile(utils.lottery_info_dir, `lottery_info_${Number(process.env.NUMBER)}.json`, JSON.stringify(all_lottery_info), "w")
})
await utils.createDir(utils.lottery_info_dir);
if (all_lottery_info[from] instanceof Array) {
all_lottery_info[from].push(...lottery_info)
} else {
all_lottery_info[from] = lottery_info
}
await utils.createFile(utils.lottery_info_dir, `lottery_info_${Number(process.env.NUMBER)}.json`, JSON.stringify(all_lottery_info), "w")
},
/**
* 读取lottery_info
@ -449,10 +427,11 @@ const utils = {
});
},
/**
* 清空lottery_info
* 清空lottery_info file
*/
clearLotteryInfo() {
utils.deleteFolderRecursive(utils.lottery_info_dir)
async clearLotteryInfo() {
await utils.createDir(utils.lottery_info_dir);
await utils.createFile(utils.lottery_info_dir, `lottery_info_${Number(process.env.NUMBER)}.json`, "{}", "w")
}
};

View File

@ -56,11 +56,14 @@ async function main() {
if (await checkCookie(NUMBER)) {
const mode = process.env.lottery_mode;
const help_msg = "用法: lottery [OPTIONS]\n\nOPTIONS:\n\tstart 启动抽奖\n\tcheck 中奖检查\n\tclear 清理动态和关注\n\tupdate 检查更新\n\thelp 帮助信息";
const { lottery_loop_wait, check_loop_wait, clear_loop_wait } = require("./lib/data/config");
const { lottery_loop_wait, check_loop_wait, clear_loop_wait, save_lottery_info_to_file } = require("./lib/data/config");
switch (mode) {
case 'start':
log.info('抽奖', '开始运行');
loop_wait = lottery_loop_wait;
if (save_lottery_info_to_file) {
await clearLotteryInfo()
}
await start(NUMBER);
break;
case 'check':
@ -158,13 +161,11 @@ function initConfig() {
log.warn('结束运行', '5秒后自动退出');
await delay(5 * 1000);
} else {
clearLotteryInfo();
while (loop_wait) {
log.info('程序休眠', `${loop_wait / 1000}秒后再次启动`)
await delay(loop_wait)
if (initEnv() || initConfig()) return;
await main()
clearLotteryInfo();
}
log.info('结束运行', '未在config.js中设置休眠时间')
}