node-automator 1.4.22 → 1.4.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/mgr.js +2 -0
- package/commands/zip_folder.js +56 -0
- package/index.js +17 -12
- package/package.json +1 -1
- package/utils/display_tool.js +1 -0
- package/utils/log_tool.js +1 -0
- package/utils/request_tool.js +1 -1
package/commands/mgr.js
CHANGED
|
@@ -122,6 +122,7 @@ const { Word2txtCommand } = require('./word2txt');
|
|
|
122
122
|
const { ObfuscateCommand } = require('./obfuscate');
|
|
123
123
|
const { SplitFileCommand } = require('./split_file');
|
|
124
124
|
const { MergeFileCommand } = require('./merge_file');
|
|
125
|
+
const { ZipFolderCommand } = require('./zip_folder');
|
|
125
126
|
|
|
126
127
|
const globalData = {
|
|
127
128
|
"executed_cfg": [], // 执行过的配置文件
|
|
@@ -487,6 +488,7 @@ function init() {
|
|
|
487
488
|
register("obfuscate", ObfuscateCommand, false);
|
|
488
489
|
register("split_file", SplitFileCommand, false);
|
|
489
490
|
register("merge_file", MergeFileCommand, false);
|
|
491
|
+
register("zip_folder", ZipFolderCommand, false);
|
|
490
492
|
}
|
|
491
493
|
|
|
492
494
|
module.exports = {
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
const { BaseCommand } = require("./base");
|
|
2
|
+
const path = require("path");
|
|
3
|
+
const { get_fst_file, get_full_path } = require("../utils/file_tool");
|
|
4
|
+
const { info } = require("../utils/log_tool");
|
|
5
|
+
const { progress } = require("../utils/display_tool");
|
|
6
|
+
const { eval_code } = require("./share_data");
|
|
7
|
+
|
|
8
|
+
class ZipFolderCommand extends BaseCommand {
|
|
9
|
+
async execute() {
|
|
10
|
+
const AdmZip = require("adm-zip");
|
|
11
|
+
let data = this.selfData;
|
|
12
|
+
let folder = get_fst_file(data.src);
|
|
13
|
+
const isAccept = data.filter
|
|
14
|
+
? eval_code(data.filter)
|
|
15
|
+
: (filename) => {
|
|
16
|
+
// 排除以 . 开头的文件、目录
|
|
17
|
+
if (filename.split(path.sep).some((part) => part.startsWith("."))) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
};
|
|
22
|
+
// creating archives
|
|
23
|
+
var zip = new AdmZip();
|
|
24
|
+
let i = 0;
|
|
25
|
+
zip.addLocalFolder(folder, "", (filename) => {
|
|
26
|
+
if (!isAccept(filename)) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
progress(i++, 0, {
|
|
30
|
+
desc: `${filename}`,
|
|
31
|
+
depth: 0,
|
|
32
|
+
align: true,
|
|
33
|
+
});
|
|
34
|
+
return true;
|
|
35
|
+
});
|
|
36
|
+
// or write everything to disk
|
|
37
|
+
if (data.dst) {
|
|
38
|
+
let dst = get_full_path(data.dst);
|
|
39
|
+
await new Promise((resolve) => {
|
|
40
|
+
zip.writeZip(dst, (err) => {
|
|
41
|
+
if (err) {
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
resolve();
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
} else {
|
|
48
|
+
let buffer = zip.toBuffer();
|
|
49
|
+
return buffer;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
module.exports = {
|
|
55
|
+
ZipFolderCommand,
|
|
56
|
+
};
|
package/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// 控制台文本颜色
|
|
3
3
|
const path = require("path");
|
|
4
|
-
require("colors");
|
|
5
4
|
const {
|
|
6
5
|
argv,
|
|
7
6
|
} = require('yargs');
|
|
@@ -12,10 +11,10 @@ require('dotenv').config({
|
|
|
12
11
|
|
|
13
12
|
// 禁用其他打印
|
|
14
13
|
console.yzplog = console.log;
|
|
15
|
-
console.log = () => {};
|
|
16
|
-
console.warn = () => {};
|
|
17
|
-
console.info = () => {};
|
|
18
|
-
console.error = () => {};
|
|
14
|
+
console.log = () => { };
|
|
15
|
+
console.warn = () => { };
|
|
16
|
+
console.info = () => { };
|
|
17
|
+
console.error = () => { };
|
|
19
18
|
|
|
20
19
|
const mgr = require("./commands/mgr");
|
|
21
20
|
const {
|
|
@@ -43,6 +42,8 @@ const {
|
|
|
43
42
|
} = require("./commands/share_data");
|
|
44
43
|
const { decode } = require('./utils/base64_tool');
|
|
45
44
|
const { formatTimeInMillisec, formatTimestampMillisec } = require('./utils/transform_tool');
|
|
45
|
+
const { hash } = require('./utils/hash_tool');
|
|
46
|
+
const { getCache, setCache } = require('./utils/cache_tool');
|
|
46
47
|
|
|
47
48
|
process.on('exit', (code) => {
|
|
48
49
|
if (!code) {
|
|
@@ -68,9 +69,14 @@ async function getCfgs() {
|
|
|
68
69
|
});
|
|
69
70
|
}
|
|
70
71
|
async function MainProcess() {
|
|
72
|
+
let lastError = null;
|
|
73
|
+
const cfgs = await getCfgs();
|
|
74
|
+
const cfgHash = hash(cfgs).toString();
|
|
71
75
|
const enableTimer = argv.ENABLE_TIMER;
|
|
72
|
-
const timerInterval = argv.TIMER_INTERVAL;
|
|
73
|
-
const
|
|
76
|
+
const timerInterval = argv.TIMER_INTERVAL || 1000;
|
|
77
|
+
const CACHE_KEY_ESTIMATE_TIME = `ESTIMATE_TIME_${cfgHash}`;
|
|
78
|
+
const estimateTime = +argv.ESTIMATE_TIME || +(await getCache(CACHE_KEY_ESTIMATE_TIME)) || 0;
|
|
79
|
+
console.yzplog(`estimateTime ${estimateTime}`)
|
|
74
80
|
let beginTime = Date.now();
|
|
75
81
|
let timer;
|
|
76
82
|
if (enableTimer && timerInterval) {
|
|
@@ -84,8 +90,6 @@ async function MainProcess() {
|
|
|
84
90
|
}
|
|
85
91
|
}, timerInterval);
|
|
86
92
|
}
|
|
87
|
-
let lastError = null;
|
|
88
|
-
const cfgs = await getCfgs();
|
|
89
93
|
try {
|
|
90
94
|
if (cfgs.indexOf(".") != -1) {
|
|
91
95
|
await mgr.exec([{
|
|
@@ -102,21 +106,22 @@ async function MainProcess() {
|
|
|
102
106
|
} catch (err) {
|
|
103
107
|
lastError = err.message || err;
|
|
104
108
|
}
|
|
109
|
+
const costTime = Date.now() - beginTime;
|
|
105
110
|
if (enableTimer) {
|
|
106
111
|
clearInterval(timer);
|
|
107
112
|
info("")
|
|
108
|
-
const costTime = Date.now() - beginTime;
|
|
109
113
|
let timeLog = `任务总耗时 ${formatTimeInMillisec(costTime, "hh:mm:ss")}`;
|
|
110
114
|
if (estimateTime) {
|
|
111
115
|
const offsetTime = costTime - estimateTime;
|
|
112
116
|
if (offsetTime > 0) {
|
|
113
|
-
timeLog += `, 比预期慢了 ${formatTimeInMillisec(offsetTime, "hh:mm:ss")}`;
|
|
117
|
+
timeLog += `, 比预期慢了 ${formatTimeInMillisec(offsetTime, "hh:mm:ss SSS")}`;
|
|
114
118
|
} else {
|
|
115
|
-
timeLog += `, 比预期快了 ${formatTimeInMillisec(-offsetTime, "hh:mm:ss")}`;
|
|
119
|
+
timeLog += `, 比预期快了 ${formatTimeInMillisec(-offsetTime, "hh:mm:ss SSS")}`;
|
|
116
120
|
}
|
|
117
121
|
}
|
|
118
122
|
success(`>>> ${timeLog} <<<`, undefined, undefined, true);
|
|
119
123
|
}
|
|
124
|
+
await setCache(CACHE_KEY_ESTIMATE_TIME, costTime);
|
|
120
125
|
|
|
121
126
|
let code = lastError ? (getLastErrorCode() || 1) : 0;
|
|
122
127
|
let extname = path.extname(argv.$0);
|
package/package.json
CHANGED
package/utils/display_tool.js
CHANGED
|
@@ -3,6 +3,7 @@ const { stdout_columns, clear_line_end, shareData } = require("../commands/share
|
|
|
3
3
|
const { clearLine } = require("./interaction_tool");
|
|
4
4
|
const { omit, omit_offset, write } = require("./log_tool");
|
|
5
5
|
const { alignNumber, formatByteSize, alignStr, Alignment } = require("./transform_tool");
|
|
6
|
+
require("colors");
|
|
6
7
|
|
|
7
8
|
const color_cfg = [
|
|
8
9
|
"cyan",
|
package/utils/log_tool.js
CHANGED
package/utils/request_tool.js
CHANGED
|
@@ -37,7 +37,7 @@ async function doRequest(data) {
|
|
|
37
37
|
let result;
|
|
38
38
|
let useCache = enable_http_cache && http_cache;
|
|
39
39
|
let quiet = data.quiet;
|
|
40
|
-
!quiet && info(
|
|
40
|
+
!quiet && info(`[${options.method}] ${url}` + (useCache ? "[缓存]" : ""));
|
|
41
41
|
let hasProgress = false;
|
|
42
42
|
let fileDst = get_full_path(data.dst || shareData.AUTOMATOR_SCRATCH + "/request_tool/" + cache_name, "FILE");
|
|
43
43
|
if (useCache) {
|