Skip to content

Commit 1cef217

Browse files
committed
add: setting to disable addon manager
Also, crash a little nicer on startup if Git is not installed @carsakiller add wiki entry for new setting
1 parent 3115bfb commit 1cef217

File tree

11 files changed

+133
-28
lines changed

11 files changed

+133
-28
lines changed

client/src/addon_manager/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export const REPOSITORY_DEFAULT_BRANCH = "main";
99
export const REPOSITORY_ISSUES_URL =
1010
"https://github.com/LuaLS/vscode-lua-webvue/issues/new?template=bug_report.yml";
1111
export const ADDONS_DIRECTORY = "addons";
12+
export const GIT_DOWNLOAD_URL = "https://git-scm.com/downloads";
1213

1314
// settings.json file info
1415
export const LIBRARY_SETTING = "Lua.workspace.library";

client/src/addon_manager/registration.ts

Lines changed: 62 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,74 @@ import * as vscode from "vscode";
22

33
import { WebVue } from "./panels/WebVue";
44
import VSCodeLogFileTransport from "./services/logging/vsCodeLogFileTransport";
5-
import { logger } from "./services/logging.service";
5+
import { createChildLogger, logger } from "./services/logging.service";
66
import dayjs from "dayjs";
77
import RelativeTime from "dayjs/plugin/relativeTime";
88
import { setupGit } from "./services/git.service";
9+
import { execSync } from "child_process";
10+
import { GIT_DOWNLOAD_URL } from "./config";
911

1012
dayjs.extend(RelativeTime);
1113

14+
const localLogger = createChildLogger("Registration");
15+
1216
/** Set up the addon manager by registering its commands in VS Code */
1317
export async function activate(context: vscode.ExtensionContext) {
14-
const setupPromises = [];
15-
// Register commands
16-
context.subscriptions.push(
17-
vscode.commands.registerCommand("lua.addon_manager.open", () => {
18-
Promise.allSettled(setupPromises)
19-
.then(() => WebVue.render(context))
20-
.catch((e) => logger.error(e));
21-
})
22-
);
23-
// Create log file transport and add to logger
24-
const fileLogger = new VSCodeLogFileTransport(context.logUri, {
25-
level: "debug",
26-
});
27-
const promiseFilelogger = await fileLogger.init();
28-
context.subscriptions.push(promiseFilelogger);
29-
logger.add(fileLogger);
30-
await fileLogger.logStart();
31-
32-
setupPromises.push(setupGit(context));
18+
const globalConfig = vscode.workspace.getConfiguration("Lua.addonManager");
19+
const isEnabled = globalConfig.get("enable") as boolean;
20+
21+
if (!isEnabled) {
22+
localLogger.warn("Addon manager has been disabled");
23+
return;
24+
}
25+
26+
try {
27+
execSync("git --version");
28+
} catch (e) {
29+
vscode.window
30+
.showErrorMessage(
31+
"Git does not appear to be installed. Please install Git to use the addon manager",
32+
"Disable Addon Manager",
33+
"Visit Git Website"
34+
)
35+
.then((result) => {
36+
switch (result) {
37+
case "Disable Addon Manager":
38+
globalConfig.update("enable", false, vscode.ConfigurationTarget.Global);
39+
break;
40+
case "Visit Git Website":
41+
vscode.env.openExternal(
42+
vscode.Uri.parse(GIT_DOWNLOAD_URL)
43+
);
44+
break;
45+
default:
46+
break;
47+
}
48+
});
49+
return;
50+
}
51+
52+
try {
53+
const setupPromises = [];
54+
// Register commands
55+
context.subscriptions.push(
56+
vscode.commands.registerCommand("lua.addon_manager.open", () => {
57+
Promise.allSettled(setupPromises)
58+
.then(() => WebVue.render(context))
59+
.catch((e) => logger.error(e));
60+
})
61+
);
62+
// Create log file transport and add to logger
63+
const fileLogger = new VSCodeLogFileTransport(context.logUri, {
64+
level: "debug",
65+
});
66+
const promiseFilelogger = await fileLogger.init();
67+
context.subscriptions.push(promiseFilelogger);
68+
logger.add(fileLogger);
69+
await fileLogger.logStart();
70+
71+
setupPromises.push(setupGit(context));
72+
} catch (e) {
73+
localLogger.error(`Failed to initialize addon manager | ${e}`);
74+
}
3375
}

package.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@
3737
],
3838
"configuration": {
3939
"properties": {
40+
"Lua.addonManager.enable" : {
41+
"default": true,
42+
"markdownDescription": "%config.addonManager.enable%",
43+
"scope": "resource",
44+
"type": "boolean"
45+
},
4046
"Lua.codeLens.enable": {
4147
"default": false,
4248
"markdownDescription": "%config.codeLens.enable%",

package.nls.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"command.exportDocument": "Export Document ...",
3+
"config.addonManager.enable": "Set the on/off state for the addon manager.",
34
"config.IntelliSense.traceBeSetted": "Please read [wiki](https://github.com/LuaLS/lua-language-server/wiki/IntelliSense-optional-features) to learn more.",
45
"config.IntelliSense.traceFieldInject": "Please read [wiki](https://github.com/LuaLS/lua-language-server/wiki/IntelliSense-optional-features) to learn more.",
56
"config.IntelliSense.traceLocalSet": "Please read [wiki](https://github.com/LuaLS/lua-language-server/wiki/IntelliSense-optional-features) to learn more.",
@@ -218,4 +219,4 @@
218219
"config.workspace.supportScheme": "Provide language server for the Lua files of the following scheme.",
219220
"config.workspace.useGitIgnore": "Ignore files list in `.gitignore` .",
220221
"config.workspace.userThirdParty": "Add private third-party library configuration file paths here, please refer to the built-in [configuration file path](https://github.com/LuaLS/lua-language-server/tree/master/meta/3rd)"
221-
}
222+
}

package.nls.pt-br.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"command.exportDocument": "Export Document ...",
3+
"config.addonManager.enable": "Set the on/off state for the addon manager.",
34
"config.IntelliSense.traceBeSetted": "Please read [wiki](https://github.com/LuaLS/lua-language-server/wiki/IntelliSense-optional-features) to learn more.",
45
"config.IntelliSense.traceFieldInject": "Please read [wiki](https://github.com/LuaLS/lua-language-server/wiki/IntelliSense-optional-features) to learn more.",
56
"config.IntelliSense.traceLocalSet": "Please read [wiki](https://github.com/LuaLS/lua-language-server/wiki/IntelliSense-optional-features) to learn more.",
@@ -218,4 +219,4 @@
218219
"config.workspace.supportScheme": "Provide language server for the Lua files of the following scheme.",
219220
"config.workspace.useGitIgnore": "Ignore files list in `.gitignore` .",
220221
"config.workspace.userThirdParty": "Add private third-party library configuration file paths here, please refer to the built-in [configuration file path](https://github.com/LuaLS/lua-language-server/tree/master/meta/3rd)"
221-
}
222+
}

package.nls.zh-cn.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"command.exportDocument": "导出文档...",
3+
"config.addonManager.enable": "Set the on/off state for the addon manager.",
34
"config.IntelliSense.traceBeSetted": "请查阅[文档](https://github.com/LuaLS/lua-language-server/wiki/IntelliSense-optional-features)了解用法。",
45
"config.IntelliSense.traceFieldInject": "请查阅[文档](https://github.com/LuaLS/lua-language-server/wiki/IntelliSense-optional-features)了解用法。",
56
"config.IntelliSense.traceLocalSet": "请查阅[文档](https://github.com/LuaLS/lua-language-server/wiki/IntelliSense-optional-features)了解用法。",
@@ -218,4 +219,4 @@
218219
"config.workspace.supportScheme": "为以下 scheme 的lua文件提供语言服务。",
219220
"config.workspace.useGitIgnore": "忽略 `.gitignore` 中列举的文件。",
220221
"config.workspace.userThirdParty": "在这里添加私有的第三方库适配文件路径,请参考内置的[配置文件路径](https://github.com/LuaLS/lua-language-server/tree/master/meta/3rd)"
221-
}
222+
}

package.nls.zh-tw.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"command.exportDocument": "Export Document ...",
3+
"config.addonManager.enable": "Set the on/off state for the addon manager.",
34
"config.IntelliSense.traceBeSetted": "請查閱[文件](https://github.com/LuaLS/lua-language-server/wiki/IntelliSense-optional-features)瞭解用法。",
45
"config.IntelliSense.traceFieldInject": "請查閱[文件](https://github.com/LuaLS/lua-language-server/wiki/IntelliSense-optional-features)瞭解用法。",
56
"config.IntelliSense.traceLocalSet": "請查閱[文件](https://github.com/LuaLS/lua-language-server/wiki/IntelliSense-optional-features)瞭解用法。",
@@ -218,4 +219,4 @@
218219
"config.workspace.supportScheme": "為以下 `scheme` 的lua檔案提供語言伺服。",
219220
"config.workspace.useGitIgnore": "忽略 `.gitignore` 中列舉的檔案。",
220221
"config.workspace.userThirdParty": "在這裡添加私有的第三方庫適應檔案路徑,請參考內建的[組態檔案路徑](https://github.com/LuaLS/lua-language-server/tree/master/meta/3rd)"
221-
}
222+
}

setting/schema-pt-br.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
{
22
"description": "Setting of sumneko.lua",
33
"properties": {
4+
"addonManager": {
5+
"properties": {
6+
"enable": {
7+
"$ref": "#/properties/addonManager.enable"
8+
}
9+
}
10+
},
11+
"addonManger.enable": {
12+
"default": true,
13+
"markdownDescription": "Set the on/off state for the addon manager.",
14+
"scope": "resource",
15+
"type": "boolean"
16+
},
417
"codeLens": {
518
"properties": {
619
"enable": {
@@ -3136,4 +3149,4 @@
31363149
},
31373150
"title": "setting",
31383151
"type": "object"
3139-
}
3152+
}

setting/schema-zh-cn.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
{
22
"description": "Setting of sumneko.lua",
33
"properties": {
4+
"addonManager": {
5+
"properties": {
6+
"enable": {
7+
"$ref": "#/properties/addonManager.enable"
8+
}
9+
}
10+
},
11+
"addonManger.enable": {
12+
"default": true,
13+
"markdownDescription": "Set the on/off state for the addon manager.",
14+
"scope": "resource",
15+
"type": "boolean"
16+
},
417
"codeLens": {
518
"properties": {
619
"enable": {
@@ -3136,4 +3149,4 @@
31363149
},
31373150
"title": "setting",
31383151
"type": "object"
3139-
}
3152+
}

setting/schema-zh-tw.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
{
22
"description": "Setting of sumneko.lua",
33
"properties": {
4+
"addonManager": {
5+
"properties": {
6+
"enable": {
7+
"$ref": "#/properties/addonManager.enable"
8+
}
9+
}
10+
},
11+
"addonManger.enable": {
12+
"default": true,
13+
"markdownDescription": "Set the on/off state for the addon manager.",
14+
"scope": "resource",
15+
"type": "boolean"
16+
},
417
"codeLens": {
518
"properties": {
619
"enable": {
@@ -3136,4 +3149,4 @@
31363149
},
31373150
"title": "setting",
31383151
"type": "object"
3139-
}
3152+
}

0 commit comments

Comments
 (0)