Skip to content

Commit beb659b

Browse files
authored
Merge pull request #3 from carsakiller/addon-submodules
Refactor to use git submodules for addons
2 parents 4d187bd + 2583641 commit beb659b

32 files changed

+680
-1193
lines changed

client/package-lock.json

Lines changed: 53 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"axios": "^1.2.1",
2222
"dayjs": "^1.11.7",
2323
"jsonc-parser": "^3.2.0",
24+
"simple-git": "^3.16.0",
2425
"triple-beam": "^1.3.0",
2526
"vscode-languageclient": "8.0.2",
2627
"winston": "^3.8.2"
Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,60 @@
11
import * as vscode from "vscode";
22
import addonManager from "../services/addonManager.service";
3+
import { createChildLogger } from "../services/logging.service";
4+
import { setSetting } from "../services/settings.service";
35

46
type Message = {
57
data: {
68
name: string;
79
};
810
};
911

12+
const localLogger = createChildLogger("Disable Addon");
13+
1014
export default async (context: vscode.ExtensionContext, message: Message) => {
11-
const addon = addonManager.localAddons.get(message.data.name);
12-
await addon.disable();
13-
await addon.setLock(false);
15+
const addon = addonManager.addons.get(message.data.name);
16+
const workspaceFolders = vscode.workspace.workspaceFolders;
17+
18+
const folderOptions = await (
19+
await addon.getEnabled()
20+
)
21+
.filter((entry) => entry.enabled === true)
22+
.map((entry) => {
23+
return {
24+
label: entry.folder.name,
25+
detail: entry.folder.uri.path,
26+
};
27+
});
28+
29+
try {
30+
if (workspaceFolders.length === 1) {
31+
await addon.disable(workspaceFolders[0]);
32+
} else {
33+
const targetFolders = await vscode.window.showQuickPick(
34+
folderOptions,
35+
{
36+
canPickMany: true,
37+
ignoreFocusOut: true,
38+
title: `Disable ${addon.name} in which folders?`,
39+
}
40+
);
41+
if (!targetFolders) {
42+
localLogger.warn("User did not pick workspace folder");
43+
await addon.setLock(false);
44+
return;
45+
}
46+
for (const target of targetFolders) {
47+
const folder = workspaceFolders.find(
48+
(folder) => folder.name === target.label
49+
);
50+
await addon.disable(folder);
51+
await setSetting(folder, "Lua.workspace.checkThirdParty", false);
52+
}
53+
}
54+
} catch (e) {
55+
localLogger.error(e);
56+
return;
57+
} finally {
58+
await addon.setLock(false);
59+
}
1460
};
Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,64 @@
11
import * as vscode from "vscode";
22
import addonManager from "../services/addonManager.service";
3+
import { createChildLogger } from "../services/logging.service";
4+
import { setSetting } from "../services/settings.service";
35

46
type Message = {
57
data: {
68
name: string;
79
};
810
};
911

12+
const localLogger = createChildLogger("Enable Addon");
13+
1014
export default async (context: vscode.ExtensionContext, message: Message) => {
11-
const addon = addonManager.localAddons.get(message.data.name);
12-
await addon.enable();
13-
await addon.setLock(false);
15+
const addon = addonManager.addons.get(message.data.name);
16+
const workspaceFolders = vscode.workspace.workspaceFolders;
17+
18+
const folderOptions = await (
19+
await addon.getEnabled()
20+
)
21+
.filter((entry) => entry.enabled === false)
22+
.map((entry) => {
23+
return {
24+
label: entry.folder.name,
25+
detail: entry.folder.uri.path,
26+
};
27+
});
28+
29+
try {
30+
if (workspaceFolders.length === 1) {
31+
await addon.enable(workspaceFolders[0]);
32+
} else {
33+
const targetFolders = await vscode.window.showQuickPick(
34+
folderOptions,
35+
{
36+
canPickMany: true,
37+
ignoreFocusOut: true,
38+
title: `Enable ${addon.name} in which folders?`,
39+
}
40+
);
41+
if (!targetFolders) {
42+
localLogger.warn("User did not pick workspace folder");
43+
await addon.setLock(false);
44+
return;
45+
}
46+
for (const target of targetFolders) {
47+
const folder = workspaceFolders.find(
48+
(folder) => folder.name === target.label
49+
);
50+
await addon.enable(folder);
51+
await setSetting(
52+
folder,
53+
"Lua.workspace.checkThirdParty",
54+
false
55+
);
56+
}
57+
}
58+
} catch (e) {
59+
localLogger.error(e);
60+
return;
61+
} finally {
62+
await addon.setLock(false);
63+
}
1464
};
Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,45 @@
11
import * as vscode from "vscode";
22
import { createChildLogger } from "../services/logging.service";
33
import addonManager from "../services/addonManager.service";
4-
import { ADDONS_DIRECTORY } from "../config";
54
import { WebVue } from "../panels/WebVue";
5+
import { ADDONS_DIRECTORY } from "../config";
66

7-
const localLogger = createChildLogger("Get Local Addons");
7+
const localLogger = createChildLogger("Get Remote Addons");
88

99
type Message = {
1010
data: { page: number; pageSize?: number };
1111
};
1212

1313
export default async (context: vscode.ExtensionContext, message: Message) => {
14-
WebVue.setLoadingState("localAddonStore", true);
14+
WebVue.setLoadingState(true);
15+
16+
const { page, pageSize } = message.data;
1517

1618
const installLocation = vscode.Uri.joinPath(
1719
context.globalStorageUri,
20+
"addonManager",
1821
ADDONS_DIRECTORY
1922
);
2023

21-
if (addonManager.localAddons.size < 1)
22-
await addonManager.fetchLocalAddons(installLocation);
24+
if (addonManager.addons.size < 1) {
25+
await addonManager.fetchAddons(installLocation);
26+
}
2327

24-
WebVue.sendMessage("localAddonStore", {
28+
WebVue.sendMessage("addonStore", {
2529
property: "total",
26-
value: addonManager.localAddons.size,
30+
value: addonManager.addons.size,
2731
});
2832

29-
if (addonManager.localAddons.size === 0) {
30-
localLogger.verbose("No local addons found");
31-
WebVue.setLoadingState("localAddonStore", false);
33+
if (addonManager.addons.size === 0) {
34+
WebVue.setLoadingState(false);
35+
localLogger.verbose("No remote addons found");
3236
return;
3337
}
3438

35-
const { page, pageSize } = message.data;
36-
37-
const addonList = addonManager.getLocalAddonsPage(page, pageSize ?? 5);
39+
const addonList = await addonManager.getAddonsPage(page, pageSize ?? 10);
3840

3941
const addons = await Promise.all(addonList.map((addon) => addon.toJSON()));
4042

41-
WebVue.sendMessage("addLocalAddon", { addons });
42-
WebVue.setLoadingState("localAddonStore", false);
43+
WebVue.sendMessage("addAddon", { addons });
44+
WebVue.setLoadingState(false);
4345
};

client/src/addon_manager/commands/getRemoteAddonPage.ts

Lines changed: 0 additions & 41 deletions
This file was deleted.
Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
1-
import install from "./install";
2-
import uninstall from "./uninstall";
31
import enable from "./enable";
42
import disable from "./disable";
53
import open from "./open";
6-
import getRemoteAddonPage from "./getRemoteAddonPage";
7-
import getLocalAddonsPage from "./getLocalAddonPage";
8-
import refreshLocalAddons from "./refreshLocalAddons";
4+
import getAddonsPage from "./getAddonsPage";
5+
import refreshAddons from "./refreshAddons";
96
import openLog from "./openLog";
7+
import update from "./update";
8+
import uninstall from "./uninstall";
109

1110
export const commands = {
12-
install,
13-
uninstall,
1411
enable,
1512
disable,
1613
open,
17-
getRemoteAddonPage,
18-
getLocalAddonsPage,
19-
refreshLocalAddons,
14+
getAddonsPage,
15+
refreshAddons,
2016
openLog,
17+
update,
18+
uninstall
2119
};

0 commit comments

Comments
 (0)