bk-press 0.0.1
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/README.md +244 -0
- package/lib/command/index.js +19 -0
- package/lib/command/init.js +177 -0
- package/lib/command/login.js +109 -0
- package/lib/command/run.js +28 -0
- package/lib/config.js +76 -0
- package/lib/index.js +15 -0
- package/lib/util/file.js +151 -0
- package/lib/util/index.js +17 -0
- package/lib/util/pkg.js +28 -0
- package/package.json +41 -0
- package/src/command/index.ts +3 -0
- package/src/command/init.ts +202 -0
- package/src/command/login.ts +133 -0
- package/src/command/run.ts +27 -0
- package/src/config.ts +87 -0
- package/src/index.ts +19 -0
- package/src/util/file.ts +152 -0
- package/src/util/index.ts +1 -0
- package/tsconfig.json +15 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { Command } from "commander";
|
|
4
|
+
import { login, init, run } from "./command";
|
|
5
|
+
|
|
6
|
+
const program = new Command();
|
|
7
|
+
|
|
8
|
+
program
|
|
9
|
+
.name("bk-press")
|
|
10
|
+
.description(
|
|
11
|
+
"一个用于 Cypress 自动化测试的 CLI 工具,帮助快速初始化和运行端到端测试"
|
|
12
|
+
)
|
|
13
|
+
.version("0.0.1");
|
|
14
|
+
|
|
15
|
+
program.command("init").action(init);
|
|
16
|
+
program.command("login").action(login);
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
program.command("run").action(run);
|
|
19
|
+
program.parse(process.argv);
|
package/src/util/file.ts
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import fs, { type Dirent } from "fs";
|
|
2
|
+
import path, { resolve } from "path";
|
|
3
|
+
|
|
4
|
+
export function readFile(
|
|
5
|
+
path: string,
|
|
6
|
+
isJSONFile = true
|
|
7
|
+
): Promise<string | Record<string, any>> {
|
|
8
|
+
return new Promise((resolve) => {
|
|
9
|
+
// 异步地读取JSON文件
|
|
10
|
+
fs.readFile(path, "utf8", (err, data) => {
|
|
11
|
+
if (err) {
|
|
12
|
+
console.error("An error occurred while reading the JSON file:", err);
|
|
13
|
+
resolve("");
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (isJSONFile) {
|
|
17
|
+
try {
|
|
18
|
+
// 解析JSON数据到对象
|
|
19
|
+
const jsonObj = JSON.parse(data);
|
|
20
|
+
// 现在您可以使用这个对象了
|
|
21
|
+
resolve(jsonObj);
|
|
22
|
+
} catch (parseError) {
|
|
23
|
+
console.error("Error parsing JSON:", parseError);
|
|
24
|
+
resolve("");
|
|
25
|
+
}
|
|
26
|
+
} else {
|
|
27
|
+
resolve(data);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function deleteFile(path: string): Promise<boolean> {
|
|
34
|
+
return new Promise((resolve) => {
|
|
35
|
+
fs.unlink(path, (err) => {
|
|
36
|
+
if (err) {
|
|
37
|
+
console.error("Failed to delete file: ", err);
|
|
38
|
+
resolve(false);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
resolve(true);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function writeFile(path: string, cotent: string): Promise<boolean> {
|
|
47
|
+
return new Promise((resolve) => {
|
|
48
|
+
fs.writeFile(path, cotent, "utf8", (fileErr) => {
|
|
49
|
+
if (fileErr) {
|
|
50
|
+
console.error("Failed to write file: ", fileErr);
|
|
51
|
+
resolve(false);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
resolve(true);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function writeEditableFile(
|
|
60
|
+
path: string,
|
|
61
|
+
cotent: string
|
|
62
|
+
): Promise<boolean> {
|
|
63
|
+
return new Promise((resolve) => {
|
|
64
|
+
fs.writeFile(path, cotent, { mode: 0o666 }, (fileErr) => {
|
|
65
|
+
if (fileErr) {
|
|
66
|
+
console.error("Failed to write file: ", fileErr);
|
|
67
|
+
resolve(false);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
resolve(true);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function createFolder(path: string): Promise<boolean> {
|
|
76
|
+
return new Promise((resolve, reject) => {
|
|
77
|
+
fs.mkdir(path, { recursive: true }, (folderErr) => {
|
|
78
|
+
if (folderErr) {
|
|
79
|
+
// vscode.window.showErrorMessage('Failed to create folder');
|
|
80
|
+
console.error("Failed to create folder: ", folderErr);
|
|
81
|
+
resolve(false);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
resolve(true);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function deleteFolder(path: string): Promise<boolean> {
|
|
90
|
+
return new Promise((resolve) => {
|
|
91
|
+
fs.rm(path, { recursive: true, force: true }, (err) => {
|
|
92
|
+
if (err) {
|
|
93
|
+
console.error(`Failed to delete folder ${path}: `, err);
|
|
94
|
+
resolve(false);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
resolve(true);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export function isFileOrFolderExist(path: string): Promise<boolean> {
|
|
103
|
+
return new Promise((resolve) => {
|
|
104
|
+
fs.access(path, fs.constants.F_OK, (err) => {
|
|
105
|
+
if (err) {
|
|
106
|
+
console.error("file or folder not exist: ", err);
|
|
107
|
+
// 处理文件或文件夹不存在的逻辑
|
|
108
|
+
resolve(false);
|
|
109
|
+
} else {
|
|
110
|
+
console.log(`${path} exists`);
|
|
111
|
+
// 处理文件或文件夹存在的逻辑
|
|
112
|
+
resolve(true);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export function isFolder(path: string): Promise<boolean> {
|
|
119
|
+
return new Promise((resolve) => {
|
|
120
|
+
fs.stat(path, (err, stats) => {
|
|
121
|
+
if (err) {
|
|
122
|
+
console.error("isFolder err: ", err);
|
|
123
|
+
resolve(false);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (stats.isDirectory()) {
|
|
128
|
+
resolve(true);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
resolve(false);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function isFile(path: string): Promise<boolean> {
|
|
137
|
+
return new Promise((resolve) => {
|
|
138
|
+
fs.stat(path, (err, stats) => {
|
|
139
|
+
if (err) {
|
|
140
|
+
console.error("isFile err: ", err);
|
|
141
|
+
resolve(false);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (stats.isFile()) {
|
|
146
|
+
resolve(true);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
resolve(false);
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./file";
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2020",
|
|
4
|
+
"module": "CommonJS",
|
|
5
|
+
"outDir": "./lib",
|
|
6
|
+
"rootDir": "./src",
|
|
7
|
+
"strict": true,
|
|
8
|
+
"esModuleInterop": true,
|
|
9
|
+
"skipLibCheck": true,
|
|
10
|
+
"forceConsistentCasingInFileNames": true,
|
|
11
|
+
"resolveJsonModule": true
|
|
12
|
+
},
|
|
13
|
+
"include": ["src/**/*"],
|
|
14
|
+
"exclude": ["node_modules", "lib"]
|
|
15
|
+
}
|