-
Notifications
You must be signed in to change notification settings - Fork 0
/
extension.js
162 lines (144 loc) · 4.69 KB
/
extension.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
const vscode = require('vscode');
const fs = require('fs').promises; // 引入 fs.promises 模块
const { exec } = require('child_process');
// 注册 "生成 param" 命令
const generateAddParamCommand = vscode.commands.registerCommand('extension.generateAddParam', async () => {
const command = await generateCommand("param");
if (command) {
// 在这里使用 command 执行你的命令
exec(command, (error, stdout, stderr) => {
if (error) {
vscode.window.showErrorMessage(`执行程序时出错: ${error.message}`);
return;
}
if (stderr) {
vscode.window.showErrorMessage(`执行程序时出错: ${stderr}`);
return;
}
});
}
});
// 注册 "生成 model" 命令
const generateAddModelCommand = vscode.commands.registerCommand('extension.generateAddModel', async () => {
const command = await generateCommand("model");
if (command) {
// 在这里使用 command 执行你的命令
exec(command, (error, stdout, stderr) => {
if (error) {
vscode.window.showErrorMessage(`执行程序时出错: ${error.message}`);
return;
}
if (stderr) {
vscode.window.showErrorMessage(`执行程序时出错: ${stderr}`);
return;
}
});
}
});
// 注册 "生成 Service" 命令
const generateAddServiceCommand = vscode.commands.registerCommand('extension.generateAddService', async () => {
const command = await generateCommand("service");
if (command) {
// 在这里使用 command 执行你的命令
exec(command, (error, stdout, stderr) => {
if (error) {
vscode.window.showErrorMessage(`执行程序时出错: ${error.message}`);
return;
}
if (stderr) {
vscode.window.showErrorMessage(`执行程序时出错: ${stderr}`);
return;
}
});
}
});
// 注册 "生成 Handler" 命令
const generateAddHandlerCommand = vscode.commands.registerCommand('extension.generateAddHandler', async () => {
const command = await generateCommand("handler");
if (command) {
// 在这里使用 command 执行你的命令
exec(command, (error, stdout, stderr) => {
if (error) {
vscode.window.showErrorMessage(`执行程序时出错: ${error.message}`);
return;
}
if (stderr) {
vscode.window.showErrorMessage(`执行程序时出错: ${stderr}`);
return;
}
});
}
});
// 注册 "生成 SDK" 命令
const generateAddSDKCommand = vscode.commands.registerCommand('extension.generateAddSDK', async () => {
const command = await generateCommand("sdk");
if (command) {
// 在这里使用 command 执行你的命令
exec(command, (error, stdout, stderr) => {
if (error) {
vscode.window.showErrorMessage(`执行程序时出错: ${error.message}`);
return;
}
if (stderr) {
vscode.window.showErrorMessage(`执行程序时出错: ${stderr}`);
return;
}
});
}
});
// 激活插件
function activate(context) {
context.subscriptions.push(generateAddParamCommand);
context.subscriptions.push(generateAddModelCommand);
context.subscriptions.push(generateAddServiceCommand);
context.subscriptions.push(generateAddHandlerCommand);
context.subscriptions.push(generateAddSDKCommand);
}
// 停用插件
function deactivate() {}
module.exports = {
activate,
deactivate
};
// 获取生成command
async function generateCommand(paramValue) {
let filePath; // 在这里声明 filePath 变量
// 获取当前活动的文本编辑器
const editor = vscode.window.activeTextEditor;
if (editor) {
// 获取当前编辑文件的 URI
const fileUri = editor.document.uri;
// 将 URI 转换为文件系统路径
filePath = fileUri.fsPath;
// 在此处使用 filePath,进行进一步的操作
} else {
vscode.window.showErrorMessage('没有打开的文件编辑器。');
return null;
}
// 提示用户输入字符串
const input = await vscode.window.showInputBox({
placeHolder: '请输入项目地址'
});
if (!input) {
// 如果用户没有输入内容,直接返回
return null;
}
// 获取特定环境变量
const goroot = process.env.GOROOT;
if (goroot) {
const makerPath = `${goroot}\\bin\\go_cli_singo_generate_code.exe`;
// 异步检查文件是否存在
try {
await fs.access(makerPath);
// 构建完整的命令
const command = `"${makerPath}" "${paramValue}" "${filePath}" "${input}"`;
return command;
} catch (error) {
vscode.window.showErrorMessage(`文件不存在: ${makerPath}`);
return null;
}
} else {
vscode.window.showErrorMessage('GOROOT 环境变量未设置。');
return null;
}
}