Skip to content

Commit 24b06eb

Browse files
committed
Merge from main
2 parents 696f6bc + 49dcea4 commit 24b06eb

32 files changed

+1143
-1071
lines changed

bin/main/plugin.yml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
11
main: org.hydev.mcpm.SpigotEntry
22
name: MCPM
3-
version: @version@
3+
version: '@version@'
44
description: Minecraft Package Manager for Bukkit/Spiget Servers
55
api-version: 1.18
6-
authors: [Hykilpikonna, 1whatleytay, MstrPikachu, kchprog, jerryzhu509, thudoan1706, aanushkasharma]
6+
authors: [Hykilpikonna, 1whatleytay, MstrPikachu, kchprog, jerryzhu509, thudoan1706,
7+
aanushkasharma]
78
website: https://github.com/CSC207-2022F-UofT/mcpm
89
commands:
910
mcpm:
1011
description: Minecraft package manager
11-
usage: "View help: /mcpm -h"
12+
usage: 'View help: /mcpm -h'
1213
permission: mcpm.use
14+
libraries:
15+
- net.sourceforge.argparse4j:argparse4j:0.9.0
16+
- org.apache.httpcomponents.client5:httpclient5-fluent:5.2-beta1
17+
- com.fasterxml.jackson.core:jackson-core:2.14.0
18+
- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.14.0
19+
- com.google.guava:guava:31.1-jre
20+
- org.jetbrains:annotations:23.0.0
21+
- org.fusesource.jansi:jansi:2.4.0
22+
- org.apache.commons:commons-lang3:3.12.0
23+
- com.opencsv:opencsv:5.7.1
24+
- com.github.luben:zstd-jni:1.5.2-5
25+
- io.airlift:aircompressor:0.21

bin/test/db.zst

3.55 MB
Binary file not shown.

src/main/java/org/hydev/mcpm/client/DatabaseManager.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ public SearchPackagesResult getSearchResult(InstallInput input) {
4444
* @param pluginName The version of the installed plugin
4545
* */
4646
public boolean checkPluginInstalledByName(String pluginName) {
47+
if (!localPluginTracker.findIfInLockByName(pluginName)) {
48+
return false;
49+
}
50+
4751
List<PluginYml> pluginInstalled = localPluginTracker.listInstalled();
4852
for (PluginYml pluginYml : pluginInstalled) {
4953
if (pluginYml != null && pluginYml.name() != null && pluginYml.name().equals(pluginName)) {
@@ -65,7 +69,8 @@ public boolean checkPluginInstalledByVersion(PluginVersion pluginVersion) {
6569
for (PluginYml pluginYml : pluginInstalled) {
6670
if (pluginYml != null && pluginYml.version() != null &&
6771
pluginYml.version().equals(version)) {
68-
return true;
72+
// Yes, if it is not in the plugin tracker lock file, we ignore.
73+
return localPluginTracker.findIfInLockByName(pluginYml.name());
6974
}
7075
}
7176
return false;
@@ -76,10 +81,8 @@ public boolean checkPluginInstalledByVersion(PluginVersion pluginVersion) {
7681
*
7782
* @param pluginVersion The version of the installed plugin
7883
* */
79-
public void addManualInstalled(PluginVersion pluginVersion, boolean isManuallyInstalled) {
80-
String pluginName = pluginVersion.meta().name();
81-
localPluginTracker.addEntry(pluginName, isManuallyInstalled || localPluginTracker.listManuallyInstalled()
82-
.contains(pluginName));
83-
84+
public void addManualInstalled(long id, PluginVersion pluginVersion, boolean isManuallyInstalled) {
85+
localPluginTracker.addEntry(pluginVersion.meta().name(),
86+
isManuallyInstalled, pluginVersion.id(), id);
8487
}
8588
}

src/main/java/org/hydev/mcpm/client/arguments/CommandsFactory.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
import org.hydev.mcpm.client.commands.controllers.UnloadController;
3131
import org.hydev.mcpm.client.commands.controllers.UpdateController;
3232
import org.hydev.mcpm.client.display.presenters.SearchPresenter;
33+
import org.hydev.mcpm.client.local.LocalPluginTracker;
3334
import org.hydev.mcpm.client.updater.CheckForUpdatesInteractor;
3435
import org.hydev.mcpm.client.list.ListAllInteractor;
35-
import org.hydev.mcpm.client.local.LocalPluginTracker;
3636
import org.hydev.mcpm.client.matcher.MatchPluginsInteractor;
3737
import org.hydev.mcpm.client.export.ExportInteractor;
3838
import org.hydev.mcpm.client.local.LocalDatabaseFetcher;
@@ -68,30 +68,31 @@ public static List<CommandParser> baseParsers(boolean isMinecraft) {
6868
var pager = new PageController(20);
6969
var mirror = new MirrorSelector();
7070
var fetcher = new LocalDatabaseFetcher(mirror.selectedMirrorSupplier());
71-
var tracker = new LocalPluginTracker();
71+
// TODO: Change all implementation to SuperLocalPluginTracker
72+
var superTracker = new LocalPluginTracker();
7273
var jarFinder = new LocalJarFinder();
7374

7475
var loader = isMinecraft ? new PluginLoader(jarFinder) : null;
7576
var listener = new ProgressBarFetcherListener();
7677
var searcher = new SearchInteractor(fetcher, listener);
7778
var installer = new InstallInteractor(
7879
new SpigotPluginDownloader(new Downloader(), mirror.selectedMirrorSupplier()),
79-
new DatabaseManager(tracker, searcher),
80+
new DatabaseManager(superTracker, searcher),
8081
loader
8182
);
8283
var matcher = new MatchPluginsInteractor(fetcher, listener);
8384
var updateChecker = new CheckForUpdatesInteractor(matcher);
84-
var updater = new UpdateInteractor(updateChecker, installer, tracker);
85+
var updater = new UpdateInteractor(updateChecker, installer, superTracker);
8586

8687
// Controllers
87-
var exportPluginsController = new ExportPluginsController(new ExportInteractor(tracker));
88-
var listController = new ListController(new ListAllInteractor(tracker));
88+
var exportPluginsController = new ExportPluginsController(new ExportInteractor(superTracker));
89+
var listController = new ListController(new ListAllInteractor(superTracker), updateChecker);
8990
var searchController = new SearchPackagesController(searcher);
9091
var mirrorController = new MirrorController(mirror);
91-
var infoController = new InfoController(tracker);
92+
var infoController = new InfoController(superTracker);
9293

9394
var installController = new InstallController(installer);
94-
var uninstallController = new UninstallController(new Uninstaller(tracker, loader, jarFinder));
95+
var uninstallController = new UninstallController(new Uninstaller(superTracker, loader, jarFinder));
9596
var updateController = new UpdateController(updater);
9697
var refreshController = new RefreshController(fetcher, listener, mirror);
9798

src/main/java/org/hydev/mcpm/client/arguments/parsers/ListParser.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,24 @@
99
/**
1010
* Command parser for List command
1111
*/
12-
public record ListParser(ListController controller) implements CommandParser
13-
{
12+
public record ListParser(ListController controller) implements CommandParser {
1413
@Override
15-
public String name()
16-
{
14+
public String name() {
1715
return "list";
1816
}
1917

2018
@Override
21-
public String description()
22-
{
19+
public String description() {
2320
return "List installed plugins";
2421
}
2522

2623
@Override
27-
public void configure(Subparser parser)
28-
{
29-
parser.addArgument("type").choices("all", "manual", "outdated").setDefault("all").nargs("?");
24+
public void configure(Subparser parser) {
25+
parser.addArgument("type").choices("all", "manual", "automatic", "outdated").setDefault("all").nargs("?");
3026
}
3127

3228
@Override
33-
public void run(Namespace details, Consumer<String> log)
34-
{
29+
public void run(Namespace details, Consumer<String> log) {
3530
controller.listAll(details.getString("type"), log);
3631
}
3732
}

src/main/java/org/hydev/mcpm/client/commands/controllers/ListController.java

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.hydev.mcpm.client.commands.controllers;
22

33
import org.hydev.mcpm.client.list.ListAllBoundary;
4+
import org.hydev.mcpm.client.updater.CheckForUpdatesBoundary;
5+
import org.hydev.mcpm.client.list.ListType;
46

57
import java.util.List;
68
import java.util.function.Consumer;
@@ -11,33 +13,54 @@
1113
* Controller class for the ListAll use case.
1214
*
1315
* @author Kevin Chen
14-
*/
15-
public class ListController
16-
{
16+
*/
17+
public class ListController {
1718
private final ListAllBoundary listAllBoundary;
19+
private final CheckForUpdatesBoundary checkForUpdatesBoundary;
1820

1921
/**
2022
* Constructor for ListAllController.
2123
*
2224
* @param listAllBoundary The boundary class for ListAllController.
2325
*/
24-
public ListController(ListAllBoundary listAllBoundary) {
26+
public ListController(ListAllBoundary listAllBoundary, CheckForUpdatesBoundary checkForUpdatesBoundary) {
2527
this.listAllBoundary = listAllBoundary;
28+
this.checkForUpdatesBoundary = checkForUpdatesBoundary;
2629
}
2730

2831
/**
2932
* Executes the ListAll use case.
3033
*
3134
* @param parameter The parameter for the ListAll use case.
32-
* @param log Logger
35+
* @param log Logger
3336
*/
3437
public void listAll(String parameter, Consumer<String> log) {
35-
var list = listAllBoundary.listAll(parameter);
38+
39+
ListType listType;
40+
switch (parameter) {
41+
case "all":
42+
listType = ListType.ALL;
43+
break;
44+
case "manual":
45+
listType = ListType.MANUAL;
46+
break;
47+
case "automatic":
48+
listType = ListType.AUTOMATIC;
49+
break;
50+
case "outdated":
51+
listType = ListType.OUTDATED;
52+
break;
53+
default:
54+
log.accept("Invalid parameter. Please use 'all', 'manual', 'automatic', or 'outdated'.");
55+
return;
56+
}
57+
58+
var list = listAllBoundary.listAll(listType, checkForUpdatesBoundary);
3659

3760
// Tabulate result
38-
var table = tabulate(list.stream().map(p ->
39-
List.of("&a" + p.name(), "&e" + p.getFirstAuthor(), p.version())).toList(),
40-
List.of(":Name", "Author", "Version:"));
61+
var table = tabulate(
62+
list.stream().map(p -> List.of("&a" + p.name(), "&e" + p.getFirstAuthor(), p.version())).toList(),
63+
List.of(":Name", "Author", "Version:"));
4164

4265
log.accept(table);
4366
}
Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,33 @@
11
package org.hydev.mcpm.client.database.tracker;
22

3-
import org.hydev.mcpm.client.search.SearchPackagesBoundary;
4-
import org.hydev.mcpm.client.models.PluginModel;
3+
import org.hydev.mcpm.client.models.PluginTrackerModel;
54
import org.hydev.mcpm.client.models.PluginYml;
65

7-
import java.io.File;
86
import java.util.List;
97

108
/**
11-
* Plugin tracker interface
9+
* Extended plugin tracker interface (with methods for specific
10+
* versionId/pluginId).
1211
*/
13-
public interface PluginTracker {
14-
void addEntry(String name, boolean status);
12+
public interface PluginTracker
13+
{
14+
void addEntry(String name, boolean status, long versionId, long pluginId);
1515

1616
void removeEntry(String name);
1717

18+
List<PluginTrackerModel> listEntries();
19+
1820
List<PluginYml> listInstalled();
1921

2022
void setManuallyInstalled(String name);
2123

2224
void removeManuallyInstalled(String name);
2325

24-
List<String> listManuallyInstalled();
25-
26-
List<String> listOrphanPlugins(boolean considerSoftDependencies);
26+
Boolean findIfInLockById(String id);
2727

28-
String getVersion(String name);
28+
Boolean findIfInLockByName(String name);
2929

30-
List<PluginYml> listOutdatedPluginYml(SearchPackagesBoundary searchPackagesBoundary);
31-
32-
Boolean compareVersion(String name, SearchPackagesBoundary searchPackagesBoundary);
30+
List<String> listManuallyInstalled();
3331

34-
Boolean compareVersionNew(File local, PluginModel remote);
32+
List<PluginYml> listOrphanPlugins(boolean considerSoftDependencies);
3533
}

src/main/java/org/hydev/mcpm/client/database/tracker/SuperPluginTracker.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/main/java/org/hydev/mcpm/client/export/ExportInteractor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.hydev.mcpm.client.export;
22

3-
import org.hydev.mcpm.client.local.LocalPluginTracker;
3+
import org.hydev.mcpm.client.database.tracker.PluginTracker;
44

55
import java.io.PrintStream;
66

@@ -9,9 +9,9 @@
99
*/
1010
public class ExportInteractor implements ExportPluginsBoundary {
1111

12-
private final LocalPluginTracker tracker;
12+
private final PluginTracker tracker;
1313

14-
public ExportInteractor(LocalPluginTracker tracker) {
14+
public ExportInteractor(PluginTracker tracker) {
1515
this.tracker = tracker;
1616
}
1717

src/main/java/org/hydev/mcpm/client/injector/LocalJarFinder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public File findJar(String name) throws PluginNotFoundException
2727
if (!dir.isDirectory()) throw new PluginNotFoundException(name);
2828
return Arrays.stream(Optional.ofNullable(dir.listFiles()).orElseThrow(() -> new PluginNotFoundException(name)))
2929
.filter(f -> f.getName().endsWith(".jar"))
30+
.parallel()
3031
.filter(f -> {
3132
try (var jf = new PluginJarFile(f))
3233
{

0 commit comments

Comments
 (0)