node-automator 1.4.21 → 1.4.23

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 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');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-automator",
3
- "version": "1.4.21",
3
+ "version": "1.4.23",
4
4
  "description": "Execute automation with yaml configuration(compatible with json)",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -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",
@@ -209,10 +209,9 @@ function showOptions(viewOptions, filteredViewOptions, selectedIndices, focusedI
209
209
  // 清空本行
210
210
  clearLine();
211
211
  let preview = omit_offset(viewOptionStr, 2);
212
- if (searchChars) {
213
- preview = preview.replaceAll(searchChars, searchChars["red"]);
214
- }
215
- write(`${indicator}${preview[optionColor]}`);
212
+ const previewParts = preview.split(searchChars);
213
+ preview = previewParts.map(v => v[optionColor]).join(searchChars["bold"]);
214
+ write(`${indicator}${preview}`);
216
215
  write('\n');
217
216
  }
218
217
  write(`${begIndex + numShow >= filteredViewOptions.length ? "" : "▼"['magenta']}${clear_line_end}\n`);
package/utils/log_tool.js CHANGED
@@ -1,5 +1,6 @@
1
1
  const { stdout_columns } = require("../commands/share_data");
2
2
  const { json_compacted, formatTimestampMillisec } = require('./transform_tool');
3
+ require("colors");
3
4
 
4
5
  const colors = [
5
6
  "gray",