auto-cr-cmd 1.0.8 → 1.0.9
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/dist/index.js +2 -100
- package/dist/run/index.d.ts +2 -0
- package/dist/run/index.js +140 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
-
var __assign = (this && this.__assign) || function () {
|
|
4
|
-
__assign = Object.assign || function(t) {
|
|
5
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
-
s = arguments[i];
|
|
7
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
8
|
-
t[p] = s[p];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
|
-
return __assign.apply(this, arguments);
|
|
13
|
-
};
|
|
14
3
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
4
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
5
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -47,97 +36,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
47
36
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
48
37
|
}
|
|
49
38
|
};
|
|
50
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
51
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
52
|
-
if (ar || !(i in from)) {
|
|
53
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
54
|
-
ar[i] = from[i];
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
58
|
-
};
|
|
59
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
60
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
61
|
-
};
|
|
62
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
63
40
|
var consola_1 = require("consola");
|
|
64
|
-
var fs_1 = __importDefault(require("fs"));
|
|
65
41
|
var commander_1 = require("commander");
|
|
66
|
-
var
|
|
67
|
-
var file_1 = require("./utils/file");
|
|
68
|
-
var core_1 = require("@babel/core");
|
|
69
|
-
var report_1 = require("./report");
|
|
70
|
-
var path_1 = __importDefault(require("path"));
|
|
71
|
-
var auto_cr_rules_1 = require("auto-cr-rules");
|
|
72
|
-
function run() {
|
|
73
|
-
return __awaiter(this, arguments, void 0, function (filePaths, ruleDir) {
|
|
74
|
-
var validPaths, allFiles, _i, validPaths_1, targetPath, stat, directoryFiles, plugins, ruleFullDir, _a, allFiles_1, file;
|
|
75
|
-
if (filePaths === void 0) { filePaths = []; }
|
|
76
|
-
return __generator(this, function (_b) {
|
|
77
|
-
try {
|
|
78
|
-
if (filePaths.length === 0) {
|
|
79
|
-
consola_1.consola.info('未提供文件或目录路径,跳过代码扫描');
|
|
80
|
-
return [2 /*return*/];
|
|
81
|
-
}
|
|
82
|
-
validPaths = filePaths.filter(function (path) { return (0, file_1.checkPathExists)(path); });
|
|
83
|
-
if (validPaths.length === 0) {
|
|
84
|
-
consola_1.consola.error('所有提供的路径均不存在,终止操作');
|
|
85
|
-
return [2 /*return*/];
|
|
86
|
-
}
|
|
87
|
-
allFiles = [];
|
|
88
|
-
for (_i = 0, validPaths_1 = validPaths; _i < validPaths_1.length; _i++) {
|
|
89
|
-
targetPath = validPaths_1[_i];
|
|
90
|
-
stat = fs_1.default.statSync(targetPath);
|
|
91
|
-
if (stat.isFile()) {
|
|
92
|
-
// 如果是文件,直接添加到扫描列表
|
|
93
|
-
allFiles.push(targetPath);
|
|
94
|
-
}
|
|
95
|
-
else if (stat.isDirectory()) {
|
|
96
|
-
// 如果是目录,递归获取所有相关文件
|
|
97
|
-
consola_1.consola.info("\u626B\u63CF\u76EE\u5F55: ".concat(targetPath));
|
|
98
|
-
directoryFiles = (0, file_1.getAllFiles)(targetPath);
|
|
99
|
-
allFiles = __spreadArray(__spreadArray([], allFiles, true), directoryFiles, true);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
if (allFiles.length === 0) {
|
|
103
|
-
consola_1.consola.info('未找到需要扫描的文件');
|
|
104
|
-
return [2 /*return*/];
|
|
105
|
-
}
|
|
106
|
-
plugins = void 0;
|
|
107
|
-
if (ruleDir === null || ruleDir === void 0 ? void 0 : ruleDir.length) {
|
|
108
|
-
ruleFullDir = path_1.default.resolve(__dirname, ruleDir !== null && ruleDir !== void 0 ? ruleDir : '');
|
|
109
|
-
plugins = (0, file_1.getAllFiles)(ruleFullDir, [], ['.js'])
|
|
110
|
-
.map(function (file) {
|
|
111
|
-
var fileName = file.split('/').reverse()[0];
|
|
112
|
-
if (fileName !== 'index.js' && fileName !== 'types.js') {
|
|
113
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
114
|
-
return [require(file), { report: report_1.report }];
|
|
115
|
-
}
|
|
116
|
-
return undefined;
|
|
117
|
-
})
|
|
118
|
-
.filter(function (item) { return item !== undefined; });
|
|
119
|
-
}
|
|
120
|
-
// 执行扫描
|
|
121
|
-
for (_a = 0, allFiles_1 = allFiles; _a < allFiles_1.length; _a++) {
|
|
122
|
-
file = allFiles_1[_a];
|
|
123
|
-
consola_1.consola.info("\u626B\u63CF\u6587\u4EF6: ".concat(file));
|
|
124
|
-
try {
|
|
125
|
-
(0, core_1.transformSync)((0, file_1.readFile)(file), __assign(__assign({}, config_1.babelConfig), { plugins: __spreadArray(__spreadArray([], auto_cr_rules_1.rules.map(function (rule) { return [rule, { report: report_1.report }]; }), true), (plugins || []), true) }));
|
|
126
|
-
}
|
|
127
|
-
catch (error) {
|
|
128
|
-
consola_1.consola.error("\u6587\u4EF6\u626B\u63CF\u5931\u8D25: ".concat(file), error instanceof Error ? error.message : error);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
consola_1.consola.success('代码扫描完成');
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
consola_1.consola.error('代码扫描过程中发生错误:', error instanceof Error ? error.message : error);
|
|
135
|
-
process.exit(1);
|
|
136
|
-
}
|
|
137
|
-
return [2 /*return*/];
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
}
|
|
42
|
+
var run_1 = require("./run");
|
|
141
43
|
commander_1.program
|
|
142
44
|
.argument('[paths...]', '需要扫描的文件或目录路径列表')
|
|
143
45
|
.option('-r, --rule-dir <directory>', '自定义规则目录路径')
|
|
@@ -150,7 +52,7 @@ var filePaths = commander_1.program.args;
|
|
|
150
52
|
switch (_a.label) {
|
|
151
53
|
case 0:
|
|
152
54
|
_a.trys.push([0, 2, , 3]);
|
|
153
|
-
return [4 /*yield*/, run(filePaths, options.ruleDir)];
|
|
55
|
+
return [4 /*yield*/, (0, run_1.run)(filePaths, options.ruleDir)];
|
|
154
56
|
case 1:
|
|
155
57
|
_a.sent();
|
|
156
58
|
process.exit(0);
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __assign = (this && this.__assign) || function () {
|
|
4
|
+
__assign = Object.assign || function(t) {
|
|
5
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
+
s = arguments[i];
|
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
8
|
+
t[p] = s[p];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
return __assign.apply(this, arguments);
|
|
13
|
+
};
|
|
14
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
24
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
25
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
26
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
27
|
+
function step(op) {
|
|
28
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
29
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
30
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
31
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
32
|
+
switch (op[0]) {
|
|
33
|
+
case 0: case 1: t = op; break;
|
|
34
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
35
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
36
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
37
|
+
default:
|
|
38
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
39
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
40
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
41
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
42
|
+
if (t[2]) _.ops.pop();
|
|
43
|
+
_.trys.pop(); continue;
|
|
44
|
+
}
|
|
45
|
+
op = body.call(thisArg, _);
|
|
46
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
47
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
51
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
52
|
+
if (ar || !(i in from)) {
|
|
53
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
54
|
+
ar[i] = from[i];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
58
|
+
};
|
|
59
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
60
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
61
|
+
};
|
|
62
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
63
|
+
exports.run = run;
|
|
64
|
+
var consola_1 = require("consola");
|
|
65
|
+
var fs_1 = __importDefault(require("fs"));
|
|
66
|
+
var config_1 = require("../babel/config");
|
|
67
|
+
var file_1 = require("../utils/file");
|
|
68
|
+
var core_1 = require("@babel/core");
|
|
69
|
+
var report_1 = require("../report");
|
|
70
|
+
var path_1 = __importDefault(require("path"));
|
|
71
|
+
var auto_cr_rules_1 = require("auto-cr-rules");
|
|
72
|
+
function run() {
|
|
73
|
+
return __awaiter(this, arguments, void 0, function (filePaths, ruleDir) {
|
|
74
|
+
var validPaths, allFiles, _i, validPaths_1, targetPath, stat, directoryFiles, plugins, ruleFullDir, _a, allFiles_1, file;
|
|
75
|
+
if (filePaths === void 0) { filePaths = []; }
|
|
76
|
+
return __generator(this, function (_b) {
|
|
77
|
+
try {
|
|
78
|
+
if (filePaths.length === 0) {
|
|
79
|
+
consola_1.consola.info('未提供文件或目录路径,跳过代码扫描');
|
|
80
|
+
return [2 /*return*/];
|
|
81
|
+
}
|
|
82
|
+
validPaths = filePaths.filter(function (path) { return (0, file_1.checkPathExists)(path); });
|
|
83
|
+
if (validPaths.length === 0) {
|
|
84
|
+
consola_1.consola.error('所有提供的路径均不存在,终止操作');
|
|
85
|
+
return [2 /*return*/];
|
|
86
|
+
}
|
|
87
|
+
allFiles = [];
|
|
88
|
+
for (_i = 0, validPaths_1 = validPaths; _i < validPaths_1.length; _i++) {
|
|
89
|
+
targetPath = validPaths_1[_i];
|
|
90
|
+
stat = fs_1.default.statSync(targetPath);
|
|
91
|
+
if (stat.isFile()) {
|
|
92
|
+
// 如果是文件,直接添加到扫描列表
|
|
93
|
+
allFiles.push(targetPath);
|
|
94
|
+
}
|
|
95
|
+
else if (stat.isDirectory()) {
|
|
96
|
+
// 如果是目录,递归获取所有相关文件
|
|
97
|
+
consola_1.consola.info("\u626B\u63CF\u76EE\u5F55: ".concat(targetPath));
|
|
98
|
+
directoryFiles = (0, file_1.getAllFiles)(targetPath);
|
|
99
|
+
allFiles = __spreadArray(__spreadArray([], allFiles, true), directoryFiles, true);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (allFiles.length === 0) {
|
|
103
|
+
consola_1.consola.info('未找到需要扫描的文件');
|
|
104
|
+
return [2 /*return*/];
|
|
105
|
+
}
|
|
106
|
+
plugins = void 0;
|
|
107
|
+
if (ruleDir === null || ruleDir === void 0 ? void 0 : ruleDir.length) {
|
|
108
|
+
ruleFullDir = path_1.default.resolve(__dirname, ruleDir !== null && ruleDir !== void 0 ? ruleDir : '');
|
|
109
|
+
plugins = (0, file_1.getAllFiles)(ruleFullDir, [], ['.js'])
|
|
110
|
+
.map(function (file) {
|
|
111
|
+
var fileName = file.split('/').reverse()[0];
|
|
112
|
+
if (fileName !== 'index.js' && fileName !== 'types.js') {
|
|
113
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
114
|
+
return [require(file), { report: report_1.report }];
|
|
115
|
+
}
|
|
116
|
+
return undefined;
|
|
117
|
+
})
|
|
118
|
+
.filter(function (item) { return item !== undefined; });
|
|
119
|
+
}
|
|
120
|
+
// 执行扫描
|
|
121
|
+
for (_a = 0, allFiles_1 = allFiles; _a < allFiles_1.length; _a++) {
|
|
122
|
+
file = allFiles_1[_a];
|
|
123
|
+
consola_1.consola.info("\u626B\u63CF\u6587\u4EF6: ".concat(file));
|
|
124
|
+
try {
|
|
125
|
+
(0, core_1.transformSync)((0, file_1.readFile)(file), __assign(__assign({}, config_1.babelConfig), { plugins: __spreadArray(__spreadArray([], auto_cr_rules_1.rules.map(function (rule) { return [rule, { report: report_1.report }]; }), true), (plugins || []), true) }));
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
consola_1.consola.error("\u6587\u4EF6\u626B\u63CF\u5931\u8D25: ".concat(file), error instanceof Error ? error.message : error);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
consola_1.consola.success('代码扫描完成');
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
consola_1.consola.error('代码扫描过程中发生错误:', error instanceof Error ? error.message : error);
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
return [2 /*return*/];
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
}
|