Make debug scripts cross platform
This commit is contained in:
34
debugTask.js
34
debugTask.js
@@ -2,6 +2,8 @@
|
|||||||
* 单任务调试入口
|
* 单任务调试入口
|
||||||
*
|
*
|
||||||
* 示例:
|
* 示例:
|
||||||
|
* node debugTask.js dailyTrending --keep-open
|
||||||
|
* node debugTask.js updateProject --keep-open --dry-run
|
||||||
* TASK=dailyTrending DEBUG_TASK=true DEBUG_KEEP_OPEN=true node debugTask.js
|
* TASK=dailyTrending DEBUG_TASK=true DEBUG_KEEP_OPEN=true node debugTask.js
|
||||||
* TASK=updateProject DEBUG_TASK=true DEBUG_KEEP_OPEN=true DEBUG_DRY_RUN=true node debugTask.js
|
* TASK=updateProject DEBUG_TASK=true DEBUG_KEEP_OPEN=true DEBUG_DRY_RUN=true node debugTask.js
|
||||||
*/
|
*/
|
||||||
@@ -52,15 +54,35 @@ const taskMap = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function getArgs() {
|
||||||
|
const args = process.argv.slice(2);
|
||||||
|
const taskArg = args.find((arg) => !arg.startsWith('--'));
|
||||||
|
const flags = new Set(args.filter((arg) => arg.startsWith('--')));
|
||||||
|
|
||||||
|
return {
|
||||||
|
taskKey: process.env.TASK || taskArg,
|
||||||
|
help: flags.has('--help') || flags.has('-h'),
|
||||||
|
keepOpen: process.env.DEBUG_KEEP_OPEN === 'true' || flags.has('--keep-open'),
|
||||||
|
pauseEachStep: process.env.DEBUG_PAUSE_EACH_STEP === 'true' || flags.has('--pause-each-step'),
|
||||||
|
dryRun: process.env.DEBUG_DRY_RUN === 'true' || flags.has('--dry-run'),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function printUsage() {
|
function printUsage() {
|
||||||
logger.info('用法: TASK=<taskName> node debugTask.js');
|
logger.info('用法: node debugTask.js <taskName> [--keep-open] [--pause-each-step] [--dry-run]');
|
||||||
|
logger.info('兼容用法: TASK=<taskName> node debugTask.js');
|
||||||
logger.info('可用任务:');
|
logger.info('可用任务:');
|
||||||
Object.keys(taskMap).forEach((key) => logger.info(` ${key}`));
|
Object.keys(taskMap).forEach((key) => logger.info(` ${key}`));
|
||||||
logger.info('常用参数: DEBUG_KEEP_OPEN=true DEBUG_PAUSE_EACH_STEP=true DEBUG_DRY_RUN=true');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
const taskKey = process.env.TASK;
|
const args = getArgs();
|
||||||
|
if (args.help) {
|
||||||
|
printUsage();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const taskKey = args.taskKey;
|
||||||
const task = taskMap[taskKey];
|
const task = taskMap[taskKey];
|
||||||
|
|
||||||
if (!task) {
|
if (!task) {
|
||||||
@@ -101,9 +123,9 @@ async function main() {
|
|||||||
logger.info(`===== 执行单任务: ${task.name} =====`);
|
logger.info(`===== 执行单任务: ${task.name} =====`);
|
||||||
await task.handler(page, {
|
await task.handler(page, {
|
||||||
debugTask: true,
|
debugTask: true,
|
||||||
keepOpen: process.env.DEBUG_KEEP_OPEN === 'true',
|
keepOpen: args.keepOpen,
|
||||||
pauseEachStep: process.env.DEBUG_PAUSE_EACH_STEP === 'true',
|
pauseEachStep: args.pauseEachStep,
|
||||||
dryRun: process.env.DEBUG_DRY_RUN === 'true',
|
dryRun: args.dryRun,
|
||||||
});
|
});
|
||||||
|
|
||||||
logger.divider();
|
logger.divider();
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
"start": "node main.js",
|
"start": "node main.js",
|
||||||
"test": "node main.js",
|
"test": "node main.js",
|
||||||
"debug:task": "node debugTask.js",
|
"debug:task": "node debugTask.js",
|
||||||
"debug:trending": "TASK=dailyTrending DEBUG_KEEP_OPEN=true node debugTask.js",
|
"debug:trending": "node debugTask.js dailyTrending --keep-open",
|
||||||
"debug:update": "TASK=updateProject DEBUG_KEEP_OPEN=true DEBUG_DRY_RUN=true node debugTask.js"
|
"debug:update": "node debugTask.js updateProject --keep-open --dry-run"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"gitcode",
|
"gitcode",
|
||||||
|
|||||||
Reference in New Issue
Block a user