, P extends Enum>
13 | {
14 | /**
15 | * インストーラを実行します。
16 | *
17 | * @param arguments インストーラに渡す引数
18 | * @return インストールの結果
19 | */
20 | InstallResult
run(A arguments);
21 |
22 | KPMRegistry getRegistry();
23 |
24 | InstallProgress
> getProgress();
25 | }
26 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/installer/interfaces/InstallerArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.interfaces;
2 |
3 | /**
4 | * インストーラの引数の基底クラスです。
5 | */
6 | public interface InstallerArgument
7 | {
8 | }
9 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/installer/interfaces/loader/PluginLoader.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.interfaces.loader;
2 |
3 | import org.bukkit.plugin.Plugin;
4 | import org.jetbrains.annotations.NotNull;
5 | import org.kunlab.kpm.pluginloader.PluginLoadResult;
6 |
7 | import java.nio.file.Path;
8 |
9 | public interface PluginLoader
10 | {
11 | /**
12 | * プラグインを読み込みます。
13 | *
14 | * @param pluginPath プラグインのパス
15 | * @return プラグインの読み込み結果
16 | */
17 | PluginLoadResult loadPlugin(@NotNull Path pluginPath);
18 |
19 | /**
20 | * プラグインをアンロードします。
21 | *
22 | * @param plugin アンロードするプラグイン
23 | */
24 | void unloadPlugin(@NotNull Plugin plugin);
25 |
26 | /**
27 | * プラグインを再読み込みします。
28 | *
29 | * @param plugin 再読み込みするプラグイン
30 | */
31 | void reloadPlugin(Plugin plugin);
32 | }
33 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/installer/signals/InstallFinishedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.kunlab.kpm.installer.interfaces.InstallResult;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | /**
9 | * インストールが完了したことを表すシグナルです。
10 | */
11 | @Value
12 | @EqualsAndHashCode(callSuper = false)
13 | public class InstallFinishedSignal extends Signal
14 | {
15 | /**
16 | * インストール結果
17 | */
18 | InstallResult extends Enum>> result;
19 | }
20 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/installer/signals/InvalidKPMInfoFileSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.bukkit.plugin.PluginDescriptionFile;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | import java.nio.file.Path;
10 |
11 | /**
12 | * プラグインのKPM情報ファイルが不正な場合に投げられるシグナルです。
13 | */
14 | @Data
15 | @EqualsAndHashCode(callSuper = false)
16 | public class InvalidKPMInfoFileSignal extends Signal
17 | {
18 | /**
19 | * プラグインの名前です。
20 | */
21 | @NotNull
22 | private final Path plugin;
23 | /**
24 | * プラグインの {@link org.bukkit.plugin.PluginDescriptionFile} です。
25 | */
26 | @NotNull
27 | private final PluginDescriptionFile descriptionFile;
28 |
29 | /**
30 | * プラグインのKPM情報ファイルを無視するかどうかを示すフラグです。
31 | * {@code true} の場合、プラグインの持つKPM情報ファイルは無視されます。
32 | * {@code false} の場合、KPM情報ファイルが不正なため、プラグインのインストールが中断される可能性があります。
33 | */
34 | private boolean ignore;
35 |
36 | public InvalidKPMInfoFileSignal(@NotNull Path plugin, @NotNull PluginDescriptionFile descriptionFile)
37 | {
38 | this.plugin = plugin;
39 | this.descriptionFile = descriptionFile;
40 | this.ignore = false;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/installer/signals/PluginModifiedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.bukkit.plugin.PluginDescriptionFile;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * サーバ上のプラグインが変更されたことを示すシグナルです。
11 | * 新規にインストールされた場合、削除された場合、更新された場合にスローされます。
12 | */
13 | @Value
14 | @EqualsAndHashCode(callSuper = false)
15 | public class PluginModifiedSignal extends Signal
16 | {
17 | /**
18 | * 変更され他プラグインの情報です。
19 | *
20 | * @see PluginDescriptionFile
21 | */
22 | @NotNull
23 | PluginDescriptionFile pluginDescription;
24 | /**
25 | * 変更の種類です。
26 | */
27 | @NotNull
28 | ModifyType modifyType;
29 |
30 | /**
31 | * 変更の種類を表す列挙型です。
32 | */
33 | public enum ModifyType
34 | {
35 | /**
36 | * プラグインが新規にインストールされたことを示します。
37 | */
38 | ADD,
39 | /**
40 | * プラグインが削除されたことを示します。
41 | */
42 | REMOVE,
43 | /**
44 | * プラグインが更新されたことを示します。
45 | */
46 | UPGRADE
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/installer/signals/assertion/IgnoredPluginSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.signals.assertion;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.bukkit.plugin.PluginDescriptionFile;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * 指定されたプラグインが無視リストに登録されていることを示すシグナルです。
11 | * {@link IgnoredPluginSignal#setContinueInstall(boolean)} を変更することで、インストールのキャンセルを設定できます。
12 | */
13 | @Data
14 | @EqualsAndHashCode(callSuper = false)
15 | public class IgnoredPluginSignal extends Signal
16 | {
17 | @NotNull
18 | private final String pluginName;
19 | @NotNull
20 | private final PluginDescriptionFile pluginDescription;
21 |
22 | private boolean continueInstall;
23 |
24 | public IgnoredPluginSignal(@NotNull PluginDescriptionFile pluginDescription)
25 | {
26 | this.pluginDescription = pluginDescription;
27 | this.pluginName = pluginDescription.getName();
28 |
29 | this.continueInstall = false;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/kpminfo/InvalidInformationFileException.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.kpminfo;
2 |
3 | public class InvalidInformationFileException extends Exception
4 | {
5 | public InvalidInformationFileException(String message)
6 | {
7 | super(message);
8 | }
9 |
10 | public InvalidInformationFileException(String message, Throwable cause)
11 | {
12 | super(message, cause);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/meta/DependType.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.meta;
2 |
3 | /**
4 | * 依存の種類です。
5 | */
6 | public enum DependType
7 | {
8 | /**
9 | * ハードな依存です。
10 | * 依存先のプラグインが存在しない場合、依存元のプラグインはロードされません。
11 | */
12 | HARD_DEPEND,
13 | /**
14 | * ソフトな依存です。
15 | * 依存先のプラグインが存在しない場合でも、依存元のプラグインはロードされます。
16 | */
17 | SOFT_DEPEND,
18 | /**
19 | * 自プラグインのロード前にロードする必要がある依存です。
20 | */
21 | LOAD_BEFORE
22 | }
23 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/meta/InstallOperator.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.meta;
2 |
3 | /**
4 | * プラグインが誰によってインストールされたかを表します。
5 | */
6 | public enum InstallOperator
7 | {
8 | /**
9 | * サーバの管理者によって手動でインストールされたことを表します。
10 | */
11 | SERVER_ADMIN,
12 | /**
13 | * プラグイン依存関係リゾルバによって自動でインストールされたことを表します。
14 | */
15 | KPM_DEPENDENCY_RESOLVER,
16 | /**
17 | * プラグインアップデータによって自動でインストールされたことを表します。
18 | */
19 | KPM_PLUGIN_UPDATER,
20 | /**
21 | * その他の方法でインストールされたことを表します。
22 | */
23 | OTHER,
24 | /**
25 | * 未知の方法でインストールされたことを表します。
26 | */
27 | UNKNOWN
28 | }
29 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/meta/interfaces/DependencyNode.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.meta.interfaces;
2 |
3 | import org.kunlab.kpm.meta.DependType;
4 |
5 | /**
6 | * 依存関係のノードです。
7 | */
8 | public interface DependencyNode
9 | {
10 | /**
11 | * 依存しているプラグインの名前です。
12 | *
13 | * @return 依存しているプラグインの名前
14 | */
15 | String getPlugin();
16 |
17 | /**
18 | * 依存先のプラグインの名前です。
19 | *
20 | * @return 依存先のプラグインの名前
21 | */
22 | String getDependsOn();
23 |
24 | /**
25 | * 依存の種類です。
26 | *
27 | * @return 依存の種類
28 | */
29 | DependType getDependType();
30 | }
31 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/meta/interfaces/PluginMetaIterator.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.meta.interfaces;
2 |
3 | import java.util.Iterator;
4 |
5 | public interface PluginMetaIterator extends Iterator, AutoCloseable
6 | {
7 | @Override
8 | boolean hasNext();
9 |
10 | @Override
11 | PluginMeta next();
12 |
13 | @Override
14 | void close();
15 |
16 | @Override
17 | void remove();
18 | }
19 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/pluginloader/PluginLoadResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.pluginloader;
2 |
3 | import lombok.Getter;
4 | import org.bukkit.plugin.Plugin;
5 | import org.jetbrains.annotations.NotNull;
6 |
7 | /**
8 | * プラグイン読込結果を表すクラスです。
9 | */
10 | public enum PluginLoadResult
11 | {
12 | /**
13 | * 正常
14 | */
15 | OK,
16 |
17 | // Errors
18 | /**
19 | * ファイルが存在しない
20 | */
21 | FILE_NOT_FOUND,
22 | /**
23 | * {@code plugin.yml} が不適切
24 | */
25 | INVALID_PLUGIN_DESCRIPTION,
26 | /**
27 | * プラグインのファイルが間違っている(メインクラスが存在しない等)
28 | */
29 | INVALID_PLUGIN_FILE,
30 | /**
31 | * プラグインの依存関係が読み込まれていない
32 | */
33 | DEPENDENCY_NOT_FOUND,
34 | /**
35 | * {@link Plugin#onLoad()} の実行中に例外が発生した
36 | */
37 | EXCEPTION_ON_ONLOAD_HANDLING,
38 | /**
39 | * その他のエラーでプラグインを有効にできなかった
40 | */
41 | ENABLE_PLUGIN_FAILED;
42 |
43 | @Getter
44 | private Exception exception; // implicitly final
45 |
46 | public PluginLoadResult withException(@NotNull Exception exception)
47 | {
48 | if (this.exception != null)
49 | this.exception = exception;
50 | return this;
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/resolver/ErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver;
2 |
3 | /**
4 | * エラーのかんたんな理由を表す列挙型です。
5 | */
6 | public enum ErrorCause
7 | {
8 | /**
9 | * クエリに対応するリゾルバが見つかりませんでした。
10 | */
11 | RESOLVER_MISMATCH,
12 | /**
13 | * 不正なクエリが指定されました。
14 | */
15 | INVALID_QUERY,
16 | /**
17 | * ホストの解決に失敗しました。
18 | */
19 | HOST_RESOLVE_FAILED,
20 | /**
21 | * プラグインが見つかりませんでした。
22 | */
23 | PLUGIN_NOT_FOUND,
24 | /**
25 | * この Minecraft サーバに適合するプラグインが見つかりませんでした。
26 | */
27 | VERSION_MISMATCH,
28 | /**
29 | * プラグインは見つかりましたが、 .jar や .zip などのファイルが見つかりませんでした。
30 | */
31 | ASSET_NOT_FOUND,
32 | /**
33 | * サーバが不正なレスポンスを返しました。
34 | */
35 | SERVER_RESPONSE_MALFORMED,
36 | /**
37 | * サーバがエラーを返しました。
38 | */
39 | SERVER_RESPONSE_ERROR,
40 | /**
41 | * サーバに接続するための資格情報が不正です。
42 | */
43 | INVALID_CREDENTIAL,
44 | /**
45 | * 不明なエラーが発生しました。
46 | */
47 | UNKNOWN_ERROR
48 | }
49 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/resolver/interfaces/BaseResolver.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.interfaces;
2 |
3 | import org.kunlab.kpm.resolver.interfaces.result.MultiResult;
4 | import org.kunlab.kpm.resolver.interfaces.result.ResolveResult;
5 |
6 | /**
7 | * プラグインの解決を行うクラスのインターフェースです。
8 | */
9 | public interface BaseResolver
10 | {
11 | /**
12 | * クエリを解決します。
13 | *
14 | * @param query クエリ
15 | * @return クエリの解決結果
16 | */
17 | ResolveResult resolve(QueryContext query);
18 |
19 | /**
20 | * 複数のリソースを自動で一意に特定します。
21 | *
22 | * @param multiResult リソースのリスト。
23 | * @return プラグイン。
24 | */
25 | ResolveResult autoPickOnePlugin(MultiResult multiResult);
26 |
27 | /**
28 | * 与えられたクエリがこのリゾルバで解決可能かどうかを返します。
29 | *
30 | * @param query クエリ
31 | * @return クエリが解決可能ならばtrue
32 | */
33 | boolean isValidResolver(QueryContext query);
34 | }
35 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/resolver/interfaces/PluginResolver.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.interfaces;
2 |
3 | import org.kunlab.kpm.resolver.interfaces.result.MultiResult;
4 | import org.kunlab.kpm.resolver.interfaces.result.ResolveResult;
5 |
6 | /**
7 | * プラグインを解決するクラスです。
8 | */
9 | public interface PluginResolver
10 | {
11 | /**
12 | * リゾルバを追加します。
13 | *
14 | * @param resolver 追加するリゾルバ
15 | * @param names リゾルバの名前とエイリアス
16 | */
17 | void addResolver(BaseResolver resolver, String... names);
18 |
19 | /**
20 | * フォールバックリゾルバを追加します。
21 | * フォールバックリゾルバは、プラグインが見つからなかった場合にフォールバックとして使用されるリゾルバです。
22 | *
23 | * @param resolver 追加するリゾルバ
24 | */
25 | void addFallbackResolver(BaseResolver resolver);
26 |
27 | /**
28 | * クエリを使用してプラグインを解決します。
29 | *
30 | * @param query クエリ
31 | */
32 | ResolveResult resolve(String query);
33 |
34 | /**
35 | * 複数の結果({@link MultiResult})を一つの結果にピックアップします。
36 | *
37 | * @param multiResult 複数の結果
38 | * @return 一つの結果
39 | */
40 | ResolveResult pickUpOne(MultiResult multiResult);
41 | }
42 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/resolver/interfaces/QueryContext.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.interfaces;
2 |
3 | import org.kunlab.kpm.versioning.Version;
4 |
5 | /**
6 | * 依存関係の解決に使用される文字列(クエリ)のインタフェースです。
7 | */
8 | public interface QueryContext
9 | {
10 | /**
11 | * リゾルバ名とクエリの区切り文字です。
12 | */
13 | String resolverNameQuerySeparator = ">";
14 | /**
15 | * クエリとバージョンの区切り文字です。
16 | */
17 | String versionEqualQuerySeparator = "==";
18 |
19 | /**
20 | * バージョンを指定する指定子です。
21 | */
22 | String versionChooseSpecifier = "?";
23 |
24 | /**
25 | * 指定するリゾルバの名前を取得します。
26 | *
27 | * @return リゾルバの名前
28 | */
29 | String getResolverName();
30 |
31 | /**
32 | * 指定するリゾルバの名前を設定します。
33 | *
34 | * @param resolverName リゾルバの名前
35 | */
36 | void setResolverName(String resolverName);
37 |
38 | /**
39 | * 指定するクエリを取得します。
40 | *
41 | * @return クエリ
42 | */
43 | String getQuery();
44 |
45 | /**
46 | * 指定するクエリを設定します。
47 | *
48 | * @param query クエリ
49 | */
50 | void setQuery(String query);
51 |
52 | /**
53 | * 指定するバージョンを取得します。
54 | *
55 | * @return バージョン
56 | */
57 | Version getVersion();
58 |
59 | /**
60 | * 指定するバージョンを設定します。
61 | *
62 | * @param version バージョン
63 | */
64 | void setVersion(Version version);
65 |
66 | /**
67 | * バージョンを選択するかどうかを取得します。
68 | *
69 | * @return バージョンを選択するかどうか
70 | */
71 | boolean isChooseVersion();
72 | }
73 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/resolver/interfaces/URLResolver.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.interfaces;
2 |
3 | import java.net.MalformedURLException;
4 | import java.net.URL;
5 | import java.util.regex.Matcher;
6 | import java.util.regex.Pattern;
7 |
8 | /**
9 | * URL を解決するリゾルバのインターフェースです。
10 | */
11 | public interface URLResolver extends BaseResolver
12 | {
13 |
14 | /**
15 | * このリゾルバが対応してるURLのホスト名を返します。
16 | *
17 | * @return このリゾルバが対応してるURLのホスト名
18 | */
19 | String[] getHosts();
20 |
21 | /**
22 | * このリゾルバがクエリに対応しているかを返します。
23 | *
24 | * @param query クエリ (URL)
25 | * @return このリゾルバがクエリに対応しているか
26 | */
27 | @Override
28 | default boolean isValidResolver(QueryContext query)
29 | {
30 | try
31 | {
32 | URL url = new URL(query.getQuery());
33 |
34 | if (this.getHosts().length == 0)
35 | return true;
36 |
37 | for (String host : this.getHosts())
38 | if (url.getHost().equalsIgnoreCase(host))
39 | return true;
40 | }
41 | catch (MalformedURLException e)
42 | {
43 | return false;
44 | }
45 | return false;
46 | }
47 |
48 | default Matcher urlMatcher(Pattern pattern, String urlString)
49 | {
50 | URL url;
51 | try
52 | {
53 | url = new URL(urlString);
54 | }
55 | catch (MalformedURLException e)
56 | {
57 | return null;
58 | }
59 |
60 | return pattern.matcher(url.getPath());
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/resolver/interfaces/result/ErrorResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.interfaces.result;
2 |
3 | import org.kunlab.kpm.resolver.ErrorCause;
4 | import org.kunlab.kpm.resolver.interfaces.BaseResolver;
5 |
6 | /**
7 | * 解決に失敗したことを表すクエリ解決結果です。
8 | */
9 | public interface ErrorResult extends ResolveResult
10 | {
11 | /**
12 | * この解決を提供したリゾルバです。
13 | */
14 | BaseResolver getResolver();
15 |
16 | /**
17 | * エラーのかんたんな理由です。
18 | */
19 | ErrorCause getCause();
20 |
21 | /**
22 | * プラグインの提供元です。
23 | */
24 | ResolveResult.Source getSource();
25 |
26 | /**
27 | * エラーの詳細な理由です。
28 | */
29 | String getMessage();
30 | }
31 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/resolver/interfaces/result/MarketplaceResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.interfaces.result;
2 |
3 | import org.jetbrains.annotations.NotNull;
4 |
5 | /**
6 | * プラグインの説明等が掲載されいる場合に返されるクラスです。
7 | */
8 | public interface MarketplaceResult
9 | {
10 | /**
11 | * 掲載されているタイトル/名前を返します。
12 | *
13 | * @return 掲載されているタイトル/名前
14 | */
15 | @NotNull
16 | String getTitle();
17 |
18 | /**
19 | * 掲載先のURLを返します.
20 | *
21 | * @return 掲載先のURL
22 | */
23 | @NotNull
24 | String getUrl();
25 |
26 | /**
27 | * 掲載されている紹介文を返します。
28 | *
29 | * @return 掲載されている紹介文
30 | */
31 | @NotNull
32 | String getDescription();
33 | }
34 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/resolver/interfaces/result/MultiResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.interfaces.result;
2 |
3 | import org.kunlab.kpm.resolver.interfaces.BaseResolver;
4 |
5 | /**
6 | * プラグインが一意に決定できなかった場合に返される結果です。
7 | */
8 | public interface MultiResult extends ResolveResult
9 | {
10 | BaseResolver getResolver();
11 |
12 | ResolveResult[] getResults();
13 | }
14 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/resolver/interfaces/result/ResolveResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.interfaces.result;
2 |
3 | import lombok.AllArgsConstructor;
4 | import org.kunlab.kpm.resolver.interfaces.BaseResolver;
5 |
6 | /**
7 | * プラグイン解決結果のインタフェースです。
8 | */
9 | public interface ResolveResult
10 | {
11 | /**
12 | * この解決を提供したリゾルバです。
13 | *
14 | * @return リゾルバ
15 | */
16 | BaseResolver getResolver();
17 |
18 | /**
19 | * プラグイン供給元です。
20 | */
21 | @AllArgsConstructor
22 | enum Source
23 | {
24 | /**
25 | * GitHub
26 | */
27 | GITHUB,
28 | /**
29 | * ...
30 | */
31 | SPIGOT_MC,
32 | /**
33 | * ...
34 | */
35 | DEV_BUKKIT,
36 | /**
37 | * ...
38 | */
39 | CURSE_FORGE,
40 | /**
41 | * ローカルの既知プラグイン
42 | */
43 | LOCAL_KNOWN,
44 | /**
45 | * 直リンク
46 | */
47 | DIRECT,
48 | /**
49 | * 不明
50 | */
51 | UNKNOWN
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/resolver/interfaces/result/SuccessResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.interfaces.result;
2 |
3 | /**
4 | * 解決に成功したことを表すクエリ解決結果です。
5 | */
6 | public interface SuccessResult extends ResolveResult
7 | {
8 | /**
9 | * プラグインのダウンロードリンクです。
10 | */
11 | String getDownloadUrl();
12 |
13 | /**
14 | * プラグインのファイル名です。
15 | */
16 | String getFileName();
17 |
18 | /**
19 | * プラグインのバージョンです。
20 | */
21 | String getVersion();
22 | }
23 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/resolver/interfaces/result/VersionedResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.interfaces.result;
2 |
3 | import java.util.List;
4 |
5 | /**
6 | * プラグインの対応するバージョンを格納するインターフェースです。
7 | */
8 | public interface VersionedResult
9 | {
10 | /**
11 | * プラグインが対応するバージョン一覧です。
12 | */
13 | List getVersions();
14 | }
15 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/task/interfaces/InstallTask.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.interfaces;
2 |
3 | /**
4 | * インストールに使用するタスクの基底クラスです。
5 | *
6 | * @param タスクの引数の型
7 | * @param タスクの結果の型
8 | */
9 | public interface InstallTask, ? extends Enum>>>
10 | {
11 | /**
12 | * タスクを実行します。
13 | *
14 | * @param arguments タスクの引数です。
15 | * @return タスクの結果です。
16 | */
17 | R runTask(A arguments);
18 | }
19 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/task/interfaces/TaskArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.interfaces;
2 |
3 | /**
4 | * タスクの引数の基底クラスです。
5 | */
6 | public interface TaskArgument
7 | {
8 | }
9 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/task/interfaces/TaskResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.interfaces;
2 |
3 | /**
4 | * 実行したタスクの結果を表します。
5 | *
6 | * @param タスクの状態の型
7 | * @param タスクのエラー原因の型
8 | */
9 | public interface TaskResult, E extends Enum>>
10 | {
11 | /**
12 | * タスクが成功したかどうかです。
13 | */
14 | boolean isSuccess();
15 |
16 | /**
17 | * タスクの状態です。
18 | */
19 | S getState();
20 |
21 | /**
22 | * タスクのエラー原因です。
23 | * タスクが成功した場合は {@code null} です。
24 | */
25 | E getErrorCause();
26 | }
27 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/task/interfaces/dependencies/DependencyElement.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.interfaces.dependencies;
2 |
3 | import org.bukkit.plugin.PluginDescriptionFile;
4 | import org.kunlab.kpm.kpminfo.KPMInformationFile;
5 |
6 | import java.nio.file.Path;
7 |
8 | /**
9 | * 依存関係 系のタスクで使用される、概念的な依存関係を表すクラスです。
10 | */
11 | public interface DependencyElement
12 | {
13 | /**
14 | * 依存関係の名前です。
15 | */
16 | String getPluginName();
17 |
18 | /**
19 | * 依存関係プラグインがあるのパスです。
20 | */
21 | Path getPluginPath();
22 |
23 | /**
24 | * 依存関係のプラグイン情報ファイルです。
25 | */
26 | PluginDescriptionFile getPluginDescription();
27 |
28 | /**
29 | * 依存関係のKPM情報ファイルです。
30 | */
31 | KPMInformationFile getKpmInfoFile();
32 |
33 | /**
34 | * 依存関係の解決に使用したクエリです。
35 | */
36 | String getQuery();
37 | }
38 |
--------------------------------------------------------------------------------
/KPMModels/src/main/java/org/kunlab/kpm/utils/interfaces/ServerConditionChecker.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.utils.interfaces;
2 |
3 | /**
4 | * サーバの状態を確認します。
5 | */
6 | public interface ServerConditionChecker
7 | {
8 | /**
9 | * サーバが終了中かどうか取得します。
10 | *
11 | * @return サーバが終了中かどうか
12 | */
13 | boolean isStopping();
14 |
15 | /**
16 | * サーバがリロード中かどうか取得します。
17 | *
18 | * @return サーバがリロード中かどうか
19 | */
20 | boolean isReloading();
21 | }
22 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/commands/CommandAutoRemove.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.commands;
2 |
3 | import lombok.AllArgsConstructor;
4 | import net.kunmc.lab.peyangpaperutils.lang.LangProvider;
5 | import net.kunmc.lab.peyangpaperutils.lib.command.CommandBase;
6 | import net.kunmc.lab.peyangpaperutils.lib.terminal.Terminal;
7 | import net.kunmc.lab.peyangpaperutils.lib.utils.Runner;
8 | import net.kyori.adventure.text.TextComponent;
9 | import org.bukkit.command.CommandSender;
10 | import org.jetbrains.annotations.NotNull;
11 | import org.jetbrains.annotations.Nullable;
12 | import org.kunlab.kpm.TeamKunPluginManager;
13 | import org.kunlab.kpm.installer.impls.autoremove.AutoRemoveArgument;
14 |
15 | import java.util.List;
16 |
17 | @AllArgsConstructor
18 | public class CommandAutoRemove extends CommandBase
19 | {
20 | private final TeamKunPluginManager plugin;
21 |
22 | @Override
23 | public void onCommand(@NotNull CommandSender sender, @NotNull Terminal terminal, String[] args)
24 | {
25 | Runner.runAsync(() ->
26 | this.plugin.getHeadInstallers().runAutoRemove(terminal, new AutoRemoveArgument())
27 | );
28 | }
29 |
30 | @Override
31 | public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Terminal terminal, String[] args)
32 | {
33 | return null;
34 | }
35 |
36 | @Override
37 | public @Nullable String getPermission()
38 | {
39 | return "kpm.autoremove";
40 | }
41 |
42 | @Override
43 | public TextComponent getHelpOneLine()
44 | {
45 | return (TextComponent) LangProvider.getComponent("command.autoremove");
46 | }
47 |
48 | @Override
49 | public String[] getArguments()
50 | {
51 | return new String[0];
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/commands/CommandClean.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.commands;
2 |
3 | import lombok.AllArgsConstructor;
4 | import net.kunmc.lab.peyangpaperutils.lang.LangProvider;
5 | import net.kunmc.lab.peyangpaperutils.lib.command.CommandBase;
6 | import net.kunmc.lab.peyangpaperutils.lib.terminal.Terminal;
7 | import net.kunmc.lab.peyangpaperutils.lib.utils.Runner;
8 | import net.kyori.adventure.text.TextComponent;
9 | import org.bukkit.command.CommandSender;
10 | import org.jetbrains.annotations.NotNull;
11 | import org.jetbrains.annotations.Nullable;
12 | import org.kunlab.kpm.TeamKunPluginManager;
13 | import org.kunlab.kpm.installer.impls.clean.CleanArgument;
14 |
15 | import java.util.List;
16 |
17 | @AllArgsConstructor
18 | public class CommandClean extends CommandBase
19 | {
20 | private final TeamKunPluginManager plugin;
21 |
22 | @Override
23 | public void onCommand(@NotNull CommandSender sender, @NotNull Terminal terminal, String[] args)
24 | {
25 | Runner.runAsync(() ->
26 | this.plugin.getHeadInstallers().runGarbageClean(terminal, new CleanArgument())
27 | );
28 | }
29 |
30 | @Override
31 | public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Terminal terminal, String[] args)
32 | {
33 | return null;
34 | }
35 |
36 | @Override
37 | public @Nullable String getPermission()
38 | {
39 | return "kpm.clean";
40 | }
41 |
42 | @Override
43 | public TextComponent getHelpOneLine()
44 | {
45 | return (TextComponent) LangProvider.getComponent("command.clean");
46 | }
47 |
48 | @Override
49 | public String[] getArguments()
50 | {
51 | return new String[0];
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/commands/CommandDebug.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.commands;
2 |
3 | import net.kunmc.lab.peyangpaperutils.lib.command.CommandBase;
4 | import net.kunmc.lab.peyangpaperutils.lib.command.SubCommandWith;
5 | import net.kyori.adventure.text.TextComponent;
6 | import org.bukkit.command.CommandSender;
7 | import org.jetbrains.annotations.NotNull;
8 | import org.jetbrains.annotations.Nullable;
9 | import org.kunlab.kpm.commands.debug.CommandDepTreeDebug;
10 | import org.kunlab.kpm.commands.debug.CommandInstallDebug;
11 | import org.kunlab.kpm.commands.debug.CommandUninstallDebug;
12 | import org.kunlab.kpm.interfaces.KPMRegistry;
13 |
14 | import java.util.HashMap;
15 | import java.util.Map;
16 |
17 | public class CommandDebug extends SubCommandWith
18 | {
19 | private final Map commands;
20 |
21 | public CommandDebug(KPMRegistry registry)
22 | {
23 | this.commands = new HashMap<>();
24 |
25 |
26 | this.commands.put("installDebug", new CommandInstallDebug(registry));
27 | this.commands.put("uninstallDebug", new CommandUninstallDebug(registry));
28 | this.commands.put("depTree", new CommandDepTreeDebug(registry.getPluginMetaManager()));
29 | }
30 |
31 | @Override
32 | protected String getName()
33 | {
34 | return "debug";
35 | }
36 |
37 | @Override
38 | protected Map getSubCommands(@NotNull CommandSender sender)
39 | {
40 | return this.commands;
41 | }
42 |
43 | @Override
44 | public @Nullable String getPermission()
45 | {
46 | return "kpm.debug";
47 | }
48 |
49 | @Override
50 | public TextComponent getHelpOneLine()
51 | {
52 | return of("KPMのデバッグに使用します。");
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/commands/debug/deptree/DependencyNodeMock.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.commands.debug.deptree;
2 |
3 | import lombok.Data;
4 | import org.kunlab.kpm.meta.DependType;
5 | import org.kunlab.kpm.meta.interfaces.DependencyNode;
6 |
7 | @Data
8 | class DependencyNodeMock implements DependencyNode
9 | {
10 | private final String plugin;
11 |
12 | private final String dependsOn;
13 |
14 | private final DependType dependType;
15 | }
16 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/signal/SignalHandlingUtils.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.signal;
2 |
3 | import net.kunmc.lab.peyangpaperutils.lang.LangProvider;
4 | import net.kunmc.lab.peyangpaperutils.lib.terminal.QuestionAttribute;
5 | import net.kunmc.lab.peyangpaperutils.lib.terminal.QuestionResult;
6 | import net.kunmc.lab.peyangpaperutils.lib.terminal.Terminal;
7 |
8 | public class SignalHandlingUtils
9 | {
10 | public static boolean askContinue(Terminal terminal)
11 | {
12 | try
13 | {
14 | QuestionResult result = terminal.getInput()
15 | .showYNQuestion(LangProvider.get("general.chat.continue"))
16 | .waitAndGetResult();
17 | return result.test(QuestionAttribute.YES);
18 | }
19 | catch (InterruptedException e)
20 | {
21 | terminal.error(LangProvider.get("general.errors.unknown") + ":%s", e.getMessage());
22 | return false;
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/signal/handlers/autoremove/AutoRemoveReadySignalHandler.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.signal.handlers.autoremove;
2 |
3 | import net.kunmc.lab.peyangpaperutils.lang.LangProvider;
4 | import net.kunmc.lab.peyangpaperutils.lib.terminal.Terminal;
5 | import org.kunlab.kpm.Utils;
6 | import org.kunlab.kpm.installer.impls.autoremove.signals.PluginEnumeratedSignal;
7 | import org.kunlab.kpm.signal.SignalHandler;
8 | import org.kunlab.kpm.signal.SignalHandlingUtils;
9 |
10 | import java.util.List;
11 | import java.util.stream.Collectors;
12 |
13 | public class AutoRemoveReadySignalHandler
14 | {
15 | private final Terminal terminal;
16 |
17 | public AutoRemoveReadySignalHandler(Terminal terminal)
18 | {
19 | this.terminal = terminal;
20 | }
21 |
22 | private void printUninstallInfo(List uninstallTargets)
23 | {
24 | this.terminal.successImplicit(LangProvider.get("installer.autoremove.unneeded"));
25 | this.terminal.successImplicit(LangProvider.get("installer.autoremove.remove"));
26 | this.terminal.writeLine(" " + uninstallTargets.stream()
27 | .sorted()
28 | .collect(Collectors.joining(" ")));
29 | Utils.printInstallStatistics(this.terminal, 0, uninstallTargets.size(), 0, 0);
30 | }
31 |
32 | @SignalHandler
33 | public void onPluginEnumerated(PluginEnumeratedSignal signal)
34 | {
35 | this.printUninstallInfo(signal.getTargetPlugins());
36 | signal.setCancel(!SignalHandlingUtils.askContinue(this.terminal));
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/signal/handlers/clean/GarbageCleanSignalHandler.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.signal.handlers.clean;
2 |
3 | import net.kunmc.lab.peyangpaperutils.lang.LangProvider;
4 | import net.kunmc.lab.peyangpaperutils.lib.terminal.Terminal;
5 | import org.kunlab.kpm.signal.SignalHandler;
6 | import org.kunlab.kpm.signal.SignalHandlingUtils;
7 | import org.kunlab.kpm.task.tasks.garbage.clean.signal.GarbageEnumeratedSignal;
8 | import org.kunlab.kpm.task.tasks.garbage.search.signals.GarbageSearchingSignal;
9 |
10 | import java.util.stream.Collectors;
11 |
12 | public class GarbageCleanSignalHandler
13 | {
14 | // ignore GarbageDeleteSkippedSignal
15 |
16 | private final Terminal terminal;
17 |
18 | public GarbageCleanSignalHandler(Terminal terminal)
19 | {
20 | this.terminal = terminal;
21 | }
22 |
23 | @SignalHandler
24 | public void onGarbageEnumerated(GarbageEnumeratedSignal signal)
25 | {
26 | this.terminal.successImplicit(LangProvider.get("installer.clean.remove"));
27 | this.terminal.writeLine(" " + signal.getGarbageDatas().stream()
28 | .sorted()
29 | .map(path -> path.getFileName().toString())
30 | .map(path -> path + "/")
31 | .collect(Collectors.joining(" ")));
32 |
33 | signal.setCancel(!SignalHandlingUtils.askContinue(this.terminal));
34 | }
35 |
36 | @SignalHandler
37 | public void onGarbageSearching(GarbageSearchingSignal signal)
38 | {
39 | this.terminal.info(LangProvider.get("installer.clean.searching"));
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/signal/handlers/common/ModifySignalHandler.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.signal.handlers.common;
2 |
3 | import net.kunmc.lab.peyangpaperutils.lang.LangProvider;
4 | import net.kunmc.lab.peyangpaperutils.lang.MsgArgs;
5 | import net.kunmc.lab.peyangpaperutils.lib.terminal.Terminal;
6 | import org.kunlab.kpm.installer.signals.PluginModifiedSignal;
7 | import org.kunlab.kpm.signal.SignalHandler;
8 | import org.kunlab.kpm.utils.Utils;
9 |
10 | /**
11 | * プラグインの変更のシグナルをハンドルするハンドラです.
12 | */
13 | public class ModifySignalHandler
14 | {
15 | private final Terminal terminal;
16 |
17 | public ModifySignalHandler(Terminal terminal)
18 | {
19 | this.terminal = terminal;
20 | }
21 |
22 | @SignalHandler
23 | public void onPluginModify(PluginModifiedSignal signal)
24 | {
25 | String pluginName = Utils.getPluginString(signal.getPluginDescription());
26 | String key = "installer.common.mod." + signal.getModifyType().name().toLowerCase();
27 | this.terminal.writeLine(LangProvider.get(key, MsgArgs.of("name", pluginName)));
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/signal/handlers/uninstall/UninstallReadySignalHandler.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.signal.handlers.uninstall;
2 |
3 | import net.kunmc.lab.peyangpaperutils.lang.LangProvider;
4 | import net.kunmc.lab.peyangpaperutils.lib.terminal.Terminal;
5 | import org.bukkit.plugin.Plugin;
6 | import org.kunlab.kpm.Utils;
7 | import org.kunlab.kpm.installer.impls.uninstall.signals.UninstallReadySignal;
8 | import org.kunlab.kpm.signal.SignalHandler;
9 | import org.kunlab.kpm.signal.SignalHandlingUtils;
10 |
11 | import java.util.List;
12 | import java.util.stream.Collectors;
13 |
14 | public class UninstallReadySignalHandler
15 | {
16 | private final Terminal terminal;
17 |
18 | public UninstallReadySignalHandler(Terminal terminal)
19 | {
20 | this.terminal = terminal;
21 | }
22 |
23 | private void printUninstallInfo(List extends Plugin> uninstallTargets)
24 | {
25 | this.terminal.successImplicit(LangProvider.get("installer.uninstall.ready"));
26 | this.terminal.writeLine(" " + uninstallTargets.stream()
27 | .map(Plugin::getName)
28 | .sorted()
29 | .collect(Collectors.joining(" ")));
30 | Utils.printInstallStatistics(this.terminal, 0, uninstallTargets.size(), 0, 0);
31 | }
32 |
33 | @SignalHandler
34 | public void onPluginsEnumerated(UninstallReadySignal signal)
35 | {
36 | this.printUninstallInfo(signal.getPlugins());
37 | if (!signal.isAutoConfirm())
38 | signal.setContinueUninstall(SignalHandlingUtils.askContinue(this.terminal));
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/upgrader/signals/AlreadyUpgradingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.upgrader.signals;
2 |
3 | import org.kunlab.kpm.signal.Signal;
4 |
5 | public class AlreadyUpgradingSignal extends Signal
6 | {
7 | }
8 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/upgrader/signals/KPMUpgradeReadySignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.upgrader.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.kunlab.kpm.signal.Signal;
6 | import org.kunlab.kpm.versioning.Version;
7 |
8 | @Data
9 | @EqualsAndHashCode(callSuper = true)
10 | public class KPMUpgradeReadySignal extends Signal
11 | {
12 | private final Version currentKPMVersion;
13 | private final Version toKPMVersion;
14 |
15 | private boolean continueUpgrade;
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/upgrader/signals/UpgraderDeploySignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.upgrader.signals;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 | import org.kunlab.kpm.signal.Signal;
6 |
7 | import java.nio.file.Path;
8 |
9 | public class UpgraderDeploySignal extends Signal
10 | {
11 | @Getter
12 | @AllArgsConstructor
13 | public static class Pre extends UpgraderDeploySignal
14 | {
15 | private final Path path;
16 | }
17 |
18 | public static class Post extends UpgraderDeploySignal
19 | {
20 | }
21 |
22 | @Getter
23 | @AllArgsConstructor
24 | public static class Error extends UpgraderDeploySignal
25 | {
26 | ErrorCause cause;
27 |
28 | public enum ErrorCause
29 | {
30 | ALREADY_DEPLOYED,
31 | DEPLOYER_NOT_EXISTS,
32 | IO_EXCEPTION_OCCURRED,
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/java/org/kunlab/kpm/utils/Utils.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.utils;
2 |
3 | import lombok.experimental.UtilityClass;
4 | import org.bukkit.plugin.Plugin;
5 | import org.bukkit.plugin.PluginDescriptionFile;
6 |
7 | @UtilityClass
8 | public class Utils
9 | {
10 | public static String getPluginString(Plugin plugin)
11 | {
12 | return getPluginString(plugin.getDescription());
13 | }
14 |
15 | public static String getPluginString(PluginDescriptionFile description)
16 | {
17 | return String.format("%s (%s)", description.getName(), description.getVersion());
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/resources/plugin.yml:
--------------------------------------------------------------------------------
1 | name: TeamKunPluginManager
2 | version: ${project.version}
3 | main: org.kunlab.kpm.TeamKunPluginManager
4 | authors: [Peyang]
5 | api-version: 1.16
6 | description: Manage your plugin!
7 | website: https://kunmc.net/
8 |
9 | loadbefore: [KPMUpgrader]
10 |
11 | commands:
12 | kunpluginmanager:
13 | aliases: [pm, kpm, kunpm, kunmgmt] #devicemgmt.mscへの恨み
14 | usage: "/kpm [Plugin name | URL | Repository Name]"
15 |
16 |
17 | permissions:
18 | kpm:
19 | description: "このプラグインを使用できます。"
20 | default: op
21 | children:
22 | kpm.install: true
23 | kpm.reload: true
24 | kpm.uninstall: true
25 | kpm.info: true
26 | kpm.autoremove: true
27 | kpm.clean: true
28 | kpm.fix: true
29 | kpm.status: true
30 | kpm.update: true
31 | kpm.install:
32 | description: "プラグインをインストールできます。"
33 | kpm.uninstall:
34 | description: "プラグインをアンインストールします。"
35 | kpm.reload:
36 | description: "プラグインを再起動します。"
37 | kpm.info:
38 | description: "プラグインの情報を閲覧します。"
39 | kpm.autoremove:
40 | description: "不要になったプラグインを削除します。"
41 | kpm.clean:
42 | description: "アンインストールされたプラグインのデータファイルを削除します。"
43 | kpm.fix:
44 | description: "プラグインのエラーを修復します。"
45 | kpm.status:
46 | description: "プラグインの状態を閲覧します。"
47 | kpm.update:
48 | description: "エイリアス定義データベースを更新します。"
49 | kpm.help:
50 | description: "プラグインのヘルプを表示します。"
51 |
52 | kpm.debug:
53 | description: "プラグインのデバッグを行います。"
54 | default: op
55 | children:
56 | kpm.debug.install:
57 | description: "プラグインをインストールします。"
58 | default: op
59 |
60 |
--------------------------------------------------------------------------------
/KPMPlugin/src/main/resources/versions.properties:
--------------------------------------------------------------------------------
1 | kpm=${project.version}
2 | pyglib=${pyglib.version}
3 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/exceptions/InstallerRunningException.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.exceptions;
2 |
3 | /**
4 | * インストーラが既に実行中であることを表す例外です。
5 | */
6 | public class InstallerRunningException extends IllegalStateException
7 | {
8 | public InstallerRunningException(String s)
9 | {
10 | super(s);
11 | }
12 |
13 | public InstallerRunningException(String message, Throwable cause)
14 | {
15 | super(message, cause);
16 | }
17 |
18 | public InstallerRunningException(Throwable cause)
19 | {
20 | super(cause);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/exceptions/TokenNotAvailableException.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.exceptions;
2 |
3 | /**
4 | * トークンが設定されていないことを表す例外です。
5 | */
6 | public class TokenNotAvailableException extends IllegalStateException
7 | {
8 | public TokenNotAvailableException(String s)
9 | {
10 | super(s);
11 | }
12 |
13 | public TokenNotAvailableException(String message, Throwable cause)
14 | {
15 | super(message, cause);
16 | }
17 |
18 | public TokenNotAvailableException(Throwable cause)
19 | {
20 | super(cause);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/autoremove/AutoRemoveArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.autoremove;
2 |
3 | import lombok.Builder;
4 | import lombok.Data;
5 | import lombok.Singular;
6 | import org.bukkit.plugin.Plugin;
7 | import org.jetbrains.annotations.NotNull;
8 | import org.kunlab.kpm.installer.interfaces.InstallerArgument;
9 |
10 | import java.util.ArrayList;
11 | import java.util.List;
12 |
13 | /**
14 | * 自動削除の引数を格納するクラスです。
15 | */
16 | @Data
17 | @Builder
18 | public class AutoRemoveArgument implements InstallerArgument
19 | {
20 | /**
21 | * 自動削除から除外するプラグインのリストです。
22 | */
23 | @NotNull
24 | @Singular("exclude")
25 | private final List excludePlugins;
26 |
27 | private AutoRemoveArgument(@NotNull List excludePlugins)
28 | {
29 | this.excludePlugins = excludePlugins;
30 | }
31 |
32 | public AutoRemoveArgument()
33 | {
34 | this(new ArrayList<>());
35 | }
36 |
37 | /**
38 | * 除外するプラグインを追加します。
39 | *
40 | * @param plugin 除外するプラグイン
41 | * @return このインスタンス
42 | */
43 | public AutoRemoveArgument addExcludePlugin(@NotNull Plugin plugin)
44 | {
45 | this.excludePlugins.add(plugin.getName());
46 | return this;
47 | }
48 |
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/autoremove/AutoRemoveErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.autoremove;
2 |
3 | /**
4 | * 自動削除のエラーを表す列挙型です。
5 | */
6 | public enum AutoRemoveErrorCause
7 | {
8 | /**
9 | * 自動削除が可能なプラグインが見つかりませんでした。
10 | */
11 | NO_AUTO_REMOVABLE_PLUGIN_FOUND,
12 |
13 | /**
14 | * アンインストーラの初期化に失敗しました。
15 | */
16 | UNINSTALLER_INIT_FAILED,
17 | /**
18 | * アンインストールに失敗しました。
19 | */
20 | UNINSTALL_FAILED,
21 | /**
22 | * 自動削除がキャンセルされました。
23 | */
24 | CANCELLED,
25 | }
26 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/autoremove/AutoRemoveSucceedResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.autoremove;
2 |
3 | import lombok.Getter;
4 | import org.kunlab.kpm.installer.InstallResultImpl;
5 | import org.kunlab.kpm.installer.interfaces.InstallProgress;
6 | import org.kunlab.kpm.installer.interfaces.Installer;
7 | import org.kunlab.kpm.task.tasks.uninstall.UnInstallResult;
8 |
9 | /**
10 | * プラグインのアンインストールの結果を表すクラスです。
11 | */
12 | @Getter
13 | public class AutoRemoveSucceedResult extends InstallResultImpl
14 | {
15 | private final UnInstallResult result;
16 |
17 | public AutoRemoveSucceedResult(InstallProgress> progress, UnInstallResult result)
18 | {
19 | super(true, progress);
20 | this.result = result;
21 | }
22 |
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/autoremove/AutoRemoveTasks.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.autoremove;
2 |
3 | /**
4 | * 自動削除のタスクを表す列挙型です。
5 | */
6 | public enum AutoRemoveTasks
7 | {
8 | /**
9 | * 削除対象のプラグインを取得します。
10 | */
11 | SEARCHING_REMOVABLES,
12 | /**
13 | * 削除対象のプラグインを削除します。
14 | */
15 | UNINSTALLING_PLUGINS
16 | }
17 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/autoremove/signals/PluginEnumeratedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.autoremove.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * 自動削除するプラグインが列挙された場合に送信されるシグナルです。
12 | */
13 | @Data
14 | @EqualsAndHashCode(callSuper = false)
15 | public class PluginEnumeratedSignal extends Signal
16 | {
17 | /**
18 | * 自動削除するプラグインのリストです。
19 | * このリストを変更すると、自動削除の対象を変更できます。
20 | */
21 | @NotNull
22 | private final List targetPlugins;
23 |
24 | /**
25 | * 自動削除をキャンセルするかどうかを示すフラグです。
26 | * このフラグがtrueの場合、自動削除はキャンセルされます。
27 | */
28 | private boolean cancel;
29 |
30 | public PluginEnumeratedSignal(@NotNull List targetPlugins)
31 | {
32 | this.targetPlugins = targetPlugins;
33 | this.cancel = false;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/autoremove/signals/PluginUninstallFailedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.autoremove.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.kunlab.kpm.installer.impls.uninstall.UnInstallTasks;
6 | import org.kunlab.kpm.installer.interfaces.InstallResult;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * アンインストールに失敗したときに送信されるシグナルです。
11 | */
12 | @Value
13 | @EqualsAndHashCode(callSuper = false)
14 | public class PluginUninstallFailedSignal extends Signal
15 | {
16 | /**
17 | * アンインストールに失敗したときの結果です。
18 | */
19 | InstallResult result;
20 | }
21 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/clean/CleanArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.clean;
2 |
3 | import lombok.Data;
4 | import org.jetbrains.annotations.NotNull;
5 | import org.kunlab.kpm.installer.interfaces.InstallerArgument;
6 |
7 | import java.util.ArrayList;
8 | import java.util.List;
9 |
10 | /**
11 | * 不要なデータ削除の引数を格納するクラスです。
12 | */
13 | @Data
14 | public class CleanArgument implements InstallerArgument
15 | {
16 | /**
17 | * 自動削除から除外するデータ名のリストです。
18 | */
19 | @NotNull
20 | private final List excludeDataNames;
21 |
22 | public CleanArgument(List excludeDataNames)
23 | {
24 | this.excludeDataNames = new ArrayList<>(excludeDataNames);
25 | }
26 |
27 | public CleanArgument()
28 | {
29 | this.excludeDataNames = new ArrayList<>();
30 | this.excludeDataNames.add("bStats");
31 | }
32 |
33 | /**
34 | * 除外するデータを追加します。
35 | *
36 | * @param dataName 除外するデータの名前
37 | * @return このインスタンス
38 | */
39 | public CleanArgument addExcludeDataName(@NotNull String dataName)
40 | {
41 | this.excludeDataNames.add(dataName);
42 | return this;
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/clean/CleanErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.clean;
2 |
3 | /**
4 | * 不要なデータの削除エラーを表す列挙型です。
5 | */
6 | public enum CleanErrorCause
7 | {
8 | }
9 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/clean/CleanTasks.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.clean;
2 |
3 | /**
4 | * 不要なデータの削除タスクを表す列挙型です。
5 | */
6 | public enum CleanTasks
7 | {
8 | /**
9 | * 不要なデータを検索します。
10 | */
11 | SEARCHING_GARBAGE,
12 | /**
13 | * 不要なデータの削除中です。
14 | */
15 | DELETING_GARBAGE,
16 | }
17 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/clean/GarbageCleanSucceedResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.clean;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.installer.InstallResultImpl;
7 | import org.kunlab.kpm.installer.interfaces.InstallProgress;
8 | import org.kunlab.kpm.installer.interfaces.Installer;
9 | import org.kunlab.kpm.installer.interfaces.InstallerArgument;
10 |
11 | import java.nio.file.Path;
12 | import java.util.List;
13 |
14 | /**
15 | * 不要なデータの削除に成功したことを表す結果です。
16 | */
17 | @Value
18 | @EqualsAndHashCode(callSuper = false)
19 | public class GarbageCleanSucceedResult extends InstallResultImpl
20 | {
21 | /**
22 | * 削除された不要なデータのパスのリストです。
23 | */
24 | @NotNull
25 | List deletedFiles;
26 | /**
27 | * 削除に失敗した不要なデータのパスのリストです。
28 | */
29 | @NotNull
30 | List deleteFailedFiles;
31 |
32 | public GarbageCleanSucceedResult(InstallProgress, CleanTasks>> progress,
33 | @NotNull List deletedFiles, @NotNull List deleteFailedFiles)
34 | {
35 | super(true, progress);
36 | this.deletedFiles = deletedFiles;
37 | this.deleteFailedFiles = deleteFailedFiles;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/install/InstallErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.install;
2 |
3 | import org.kunlab.kpm.installer.impls.install.signals.AlreadyInstalledPluginSignal;
4 | import org.kunlab.kpm.installer.signals.InvalidKPMInfoFileSignal;
5 | import org.kunlab.kpm.installer.signals.assertion.IgnoredPluginSignal;
6 |
7 | /**
8 | * インストールのエラーを表す列挙型です。
9 | */
10 | public enum InstallErrorCause
11 | {
12 | // Environment errors
13 | /**
14 | * 変更しようとしているプラグインが、無視リストに登録されており、
15 | * {@link IgnoredPluginSignal} でも強制インストールが選択されませんでした。
16 | */
17 | PLUGIN_IGNORED,
18 | /**
19 | * インストールしようとしているプラグインが、既にインストールされており、
20 | * {@link AlreadyInstalledPluginSignal} でも置換が選択されませんでした。
21 | */
22 | PLUGIN_ALREADY_INSTALLED,
23 | /**
24 | * プラグインの持つKPM情報ファイルが不正であり、
25 | * {@link InvalidKPMInfoFileSignal} でも無視が選択されませんでした。
26 | */
27 | INVALID_KPM_INFO_FILE,
28 | /**
29 | * 手動インストールに対応していないプラグインです。
30 | */
31 | PLUGIN_NOT_MANUALLY_INSTALLABLE
32 | }
33 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/install/signals/AlreadyInstalledPluginSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.install.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.bukkit.plugin.PluginDescriptionFile;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * プラグインが既にインストールされていることを示すシグナルです。
11 | * {@link AlreadyInstalledPluginSignal#setReplacePlugin(boolean)} を用いて、既存のプラグインを新規プラグインに置換するかどうかを設定できます。
12 | */
13 | @Data
14 | @EqualsAndHashCode(callSuper = false)
15 | public class AlreadyInstalledPluginSignal extends Signal
16 | {
17 | /**
18 | * インストールされたプラグインの種類
19 | */
20 | @NotNull
21 | private final PluginDescriptionFile installedPlugin;
22 |
23 | @NotNull
24 | private final PluginDescriptionFile installingPlugin;
25 |
26 | private boolean replacePlugin;
27 |
28 | /**
29 | * コンストラクタです。
30 | *
31 | * @param installedPlugin 既にインストールされているプラグインの {@link PluginDescriptionFile}
32 | * @param installingPlugin インストールしようとしているプラグインの {@link PluginDescriptionFile}
33 | */
34 | public AlreadyInstalledPluginSignal(@NotNull PluginDescriptionFile installedPlugin, @NotNull PluginDescriptionFile installingPlugin)
35 | {
36 | this.installedPlugin = installedPlugin;
37 | this.installingPlugin = installingPlugin;
38 | this.replacePlugin = false;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/RegisterArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import org.jetbrains.annotations.Nullable;
6 | import org.kunlab.kpm.installer.interfaces.InstallerArgument;
7 |
8 | /**
9 | * トークン登録の引数を格納するクラスです。
10 | */
11 | @Data
12 | @AllArgsConstructor
13 | public class RegisterArgument implements InstallerArgument
14 | {
15 | /**
16 | * GitHubのアクセストークンです。
17 | */
18 | @Nullable
19 | private final String token;
20 | }
21 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/RegisterErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register;
2 |
3 | /**
4 | * トークン登録のエラーを表す列挙型です。
5 | */
6 | public enum RegisterErrorCause
7 | {
8 | /**
9 | * I/Oエラーが発生したことを示します。
10 | */
11 | IO_EXCEPTION_OCCURRED,
12 | /**
13 | * トークンが無効であることを示します。
14 | */
15 | INVALID_TOKEN,
16 | /**
17 | * キャンセルされたことを示します。
18 | */
19 | GENERATE_CANCELLED,
20 | /**
21 | * ユーザ検証コードの要求に失敗したことを示します。
22 | */
23 | VERIFICATION_CODE_REQUEST_FAILED,
24 | /**
25 | * コードの検証に失敗したことを示します。
26 | */
27 | VERIFICATION_FAILED,
28 | }
29 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/RegisterTasks.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register;
2 |
3 | /**
4 | * トークン登録のタスクを表す列挙型です。
5 | */
6 | public enum RegisterTasks
7 | {
8 | /**
9 | * トークンの登録が初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 | /**
13 | * トークンの登録中であることを示します。
14 | */
15 | REGISTERING_TOKEN,
16 | /**
17 | * ユーザ検証コードの要求中であることを示します。
18 | */
19 | REQUESTING_USER_VERIFICATION_CODE,
20 | /**
21 | * ユーザの検証コードの入力を待機していることを示します。
22 | */
23 | POLLING_USER_VERIFICATION,
24 | }
25 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/pojos/UserVerificationCodeResponse.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register.pojos;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 |
7 | /**
8 | * ユーザ検証コード要求のレスポンスです。
9 | */
10 | @Value
11 | public class UserVerificationCodeResponse
12 | {
13 | /**
14 | * デバイスコードです。
15 | */
16 | @NotNull
17 | @SerializedName("device_code")
18 | String deviceCode;
19 |
20 | /**
21 | * ユーザコードです。
22 | */
23 | @NotNull
24 | @SerializedName("user_code")
25 | String userCode;
26 |
27 | /**
28 | * 認証URLです。
29 | */
30 | @NotNull
31 | @SerializedName("verification_uri")
32 | String verificationUrl;
33 |
34 | /**
35 | * 認証コードの有効期限です。
36 | */
37 | @SerializedName("expires_in")
38 | long expiresIn;
39 |
40 | /**
41 | * ポーリング間隔です。
42 | */
43 | @SerializedName("interval")
44 | long interval;
45 | }
46 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/pojos/VerificationSubmitPollingResponse.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register.pojos;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.Value;
6 | import org.jetbrains.annotations.NotNull;
7 |
8 | /**
9 | * ユーザが検証コードを入力し、トークンの取得が完了したことを示すレスポンスです。
10 | */
11 | @Value
12 | @EqualsAndHashCode(callSuper = false)
13 | public class VerificationSubmitPollingResponse
14 | {
15 | /**
16 | * アクセストークンです。
17 | */
18 | @NotNull
19 | @SerializedName("access_token")
20 | String accessToken;
21 |
22 | /**
23 | * トークンの種類です。
24 | */
25 | @NotNull
26 | @SerializedName("token_type")
27 | String tokenType;
28 |
29 | /**
30 | * トークンのスコープです。
31 | */
32 | @NotNull
33 | @SerializedName("scope")
34 | String scope;
35 | }
36 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/signals/TokenCheckingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.kunlab.kpm.signal.Signal;
6 |
7 | /**
8 | * 指定されたトークンが有効であるか、チェック中であることを示すシグナルです。
9 | */
10 | @Data
11 | @EqualsAndHashCode(callSuper = false)
12 | public class TokenCheckingSignal extends Signal
13 | {
14 | }
15 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/signals/TokenGenerateStartingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.kunlab.kpm.signal.Signal;
6 |
7 | /**
8 | * トークンの生成の開始中であることを示すシグナルです。
9 | */
10 | @Data
11 | @EqualsAndHashCode(callSuper = false)
12 | public class TokenGenerateStartingSignal extends Signal
13 | {
14 | /**
15 | * 生成を続けるかどうかを示すフラグです。
16 | */
17 | private boolean continueGenerate;
18 |
19 | public TokenGenerateStartingSignal()
20 | {
21 | this.continueGenerate = true;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/signals/TokenStoredSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | /**
9 | * トークンが登録されたことを示すシグナルです。
10 | */
11 | @Value
12 | @EqualsAndHashCode(callSuper = false)
13 | public class TokenStoredSignal extends Signal
14 | {
15 | /**
16 | * 登録されたトークンです。
17 | */
18 | @NotNull
19 | String token;
20 | }
21 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/signals/UserDoesntCompleteVerifySignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | /**
9 | * ユーザが検証コードの入力を完了していないことを示すシグナルです。
10 | */
11 | @Value
12 | @EqualsAndHashCode(callSuper = false)
13 | public class UserDoesntCompleteVerifySignal extends Signal
14 | {
15 | /**
16 | * ユーザが入力するコードです。
17 | */
18 | @NotNull
19 | String userCode;
20 |
21 | /**
22 | * 認証URLです。
23 | */
24 | @NotNull
25 | String verificationUrl;
26 |
27 | /**
28 | * コードが期限切れになる時間です。
29 | */
30 | long expiresIn;
31 |
32 | /**
33 | * コードの残り有効期限です。
34 | */
35 | long remainTime;
36 | }
37 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/signals/UserVerificationSuccessSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | /**
9 | * ユーザ検証に成功したことを示すシグナルです。
10 | */
11 | @Value
12 | @EqualsAndHashCode(callSuper = false)
13 | public class UserVerificationSuccessSignal extends Signal
14 | {
15 | /**
16 | * アクセストークンです。
17 | */
18 | @NotNull
19 | String accessToken;
20 |
21 | /**
22 | * トークンのタイプです。(例:{@code Bearer})
23 | */
24 | @NotNull
25 | String tokenType;
26 |
27 | /**
28 | * トークンのスコープです。
29 | */
30 | @NotNull
31 | String scope;
32 | }
33 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/signals/UserVerifyDeniedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | /**
9 | * ユーザがキャンセルをクリックしたことを示すシグナルです。
10 | */
11 | @Value
12 | @EqualsAndHashCode(callSuper = false)
13 | public class UserVerifyDeniedSignal extends Signal
14 | {
15 | @NotNull
16 | String userCode;
17 | }
18 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/signals/VerificationCodeExpiredSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | /**
9 | * ユーザの検証コードの有効期限が切れたことを示すシグナルです。
10 | */
11 | @Value
12 | @EqualsAndHashCode(callSuper = false)
13 | public class VerificationCodeExpiredSignal extends Signal
14 | {
15 | /**
16 | * ユーザが入力するべきだった検証コードです。
17 | */
18 | @NotNull
19 | String userCode;
20 | }
21 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/signals/VerificationCodeReceivedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.installer.impls.register.pojos.UserVerificationCodeResponse;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * ユーザ検証コードを受信したことを示すシグナルです。
11 | */
12 | @Value
13 | @EqualsAndHashCode(callSuper = false)
14 | public class VerificationCodeReceivedSignal extends Signal
15 | {
16 | /**
17 | * ユーザが入力する検証コードです。
18 | */
19 | @NotNull
20 | String userCode;
21 |
22 | /**
23 | * ユーザが検証コードを入力するURLです。
24 | */
25 | @NotNull
26 | String verificationUrl;
27 |
28 | /**
29 | * 認証コードの有効期限(秒)です。
30 | */
31 | long expiresIn;
32 |
33 | /**
34 | * 認証コードの有効期限のUNIX時間です。
35 | */
36 | long expiresAt;
37 |
38 | public VerificationCodeReceivedSignal(@NotNull UserVerificationCodeResponse apiResponse)
39 | {
40 | this.userCode = apiResponse.getUserCode();
41 | this.verificationUrl = apiResponse.getVerificationUrl();
42 | this.expiresIn = apiResponse.getExpiresIn(); // Unit: seconds
43 | this.expiresAt = System.currentTimeMillis() + (apiResponse.getExpiresIn() * 1000);
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/signals/VerificationCodeRequestFailedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | /**
9 | * ユーザ検証コード要求に失敗したときに発行されるシグナルです。
10 | */
11 | @Value
12 | @EqualsAndHashCode(callSuper = false)
13 | public class VerificationCodeRequestFailedSignal extends Signal
14 | {
15 | /**
16 | * HTTPステータスコードです。
17 | */
18 | int httpStatusCode;
19 | /**
20 | * エラーメッセージです。
21 | */
22 | @NotNull
23 | String errorMessage;
24 | }
25 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/register/signals/VerificationCodeRequestingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.register.signals;
2 |
3 | import org.kunlab.kpm.signal.Signal;
4 |
5 | /**
6 | * ユーザ検証コードの要求中であることを示すシグナルです。
7 | */
8 | public class VerificationCodeRequestingSignal extends Signal
9 | {
10 | }
11 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/uninstall/PluginUninstallSucceedResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.uninstall;
2 |
3 | import lombok.Getter;
4 | import org.kunlab.kpm.installer.InstallResultImpl;
5 | import org.kunlab.kpm.installer.interfaces.InstallProgress;
6 | import org.kunlab.kpm.installer.interfaces.Installer;
7 | import org.kunlab.kpm.installer.interfaces.InstallerArgument;
8 | import org.kunlab.kpm.task.tasks.uninstall.UnInstallResult;
9 |
10 | /**
11 | * プラグインのアンインストールの結果を表すクラスです。
12 | */
13 | @Getter
14 | public class PluginUninstallSucceedResult extends InstallResultImpl
15 | {
16 | private final UnInstallResult result;
17 |
18 | public PluginUninstallSucceedResult(InstallProgress, UnInstallTasks>> progress, UnInstallResult result)
19 | {
20 | super(true, progress);
21 | this.result = result;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/uninstall/UnInstallErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.uninstall;
2 |
3 | import org.kunlab.kpm.installer.signals.assertion.IgnoredPluginSignal;
4 | import org.kunlab.kpm.task.tasks.uninstall.signals.PluginIsDependencySignal;
5 |
6 | /**
7 | * アンインストールのエラーを表す列挙型です。
8 | */
9 | public enum UnInstallErrorCause
10 | {
11 | /**
12 | * 指定されたプラグインが見つかりませんでした。
13 | */
14 | PLUGIN_NOT_FOUND,
15 | /**
16 | * 指定されたプラグインが無視リストに登録されており、
17 | * {@link IgnoredPluginSignal} でも強制アンインストールが選択されませんでした。
18 | */
19 | PLUGIN_IGNORED,
20 | /**
21 | * 指定されたプラグインが他のプラグインの依存関係に含まれており、
22 | * {@link PluginIsDependencySignal} でも強制アンインストールが選択されませんでした。
23 | */
24 | PLUGIN_IS_DEPENDENCY,
25 | /**
26 | * アンインストールがユーザまたはシグナルによってキャンセルされました。
27 | */
28 | CANCELLED,
29 | }
30 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/uninstall/UnInstallTasks.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.uninstall;
2 |
3 | /**
4 | * アンインストールのタスクを表す列挙型です。
5 | */
6 | public enum UnInstallTasks
7 | {
8 | /**
9 | * アンインストーラが初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 | /**
13 | * プラグインの検索中を示します。
14 | */
15 | SEARCHING_PLUGIN,
16 | /**
17 | * 環境の状態の確認中を示します。
18 | * 例えば、プラグインが存在するかや、無視リストに登録されていないかなどを確認します。
19 | */
20 | CHECKING_ENVIRONMENT,
21 |
22 | /**
23 | * アンインストール順序の計算中を示します。
24 | */
25 | COMPUTING_UNINSTALL_ORDER,
26 | /**
27 | * プラグインをアンインストール中を示します。
28 | */
29 | UNINSTALLING_PLUGINS,
30 | }
31 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/uninstall/signals/SearchingPluginSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.uninstall.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | /**
9 | * プラグインを検索中であることを示すシグナルです。
10 | */
11 | @Data
12 | @EqualsAndHashCode(callSuper = false)
13 | public class SearchingPluginSignal extends Signal
14 | {
15 | @NotNull
16 | private String query;
17 | }
18 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/uninstall/signals/UninstallReadySignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.uninstall.signals;
2 |
3 | import lombok.Getter;
4 | import lombok.Setter;
5 | import org.bukkit.plugin.Plugin;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * プラグインの列挙が完了したことを通知するシグナルです。
12 | */
13 | @Getter
14 | public class UninstallReadySignal extends Signal
15 | {
16 | /**
17 | * アンインストール対象のプラグインのリストです。
18 | */
19 | private final List plugins;
20 | /**
21 | * 自動でアンインストールを行うかどうかのフラグです。
22 | */
23 | private final boolean autoConfirm;
24 | /**
25 | * アンインストールを続行するかどうかです。
26 | */
27 | @Setter
28 | private boolean continueUninstall;
29 |
30 | public UninstallReadySignal(List plugins, boolean autoConfirm)
31 | {
32 | this.plugins = plugins;
33 | this.autoConfirm = autoConfirm;
34 | this.continueUninstall = true;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/update/UpdateArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.update;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import org.kunlab.kpm.installer.interfaces.InstallerArgument;
6 |
7 | import java.util.Map;
8 |
9 | /**
10 | * エイリアスのアップデートの引数を格納するクラスです。
11 | */
12 | @Data
13 | @AllArgsConstructor
14 | public class UpdateArgument implements InstallerArgument
15 | {
16 | /**
17 | * エイリアスのソースのURLです。
18 | */
19 | Map remotes;
20 | }
21 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/update/UpdateErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.update;
2 |
3 | /**
4 | * エイリアスのアップデートのエラーを表す列挙型です。
5 | */
6 | public enum UpdateErrorCause
7 | {
8 | }
9 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/update/UpdateTasks.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.update;
2 |
3 | /**
4 | * エイリアスのアップデートのタスクを表す列挙型です。
5 | */
6 | public enum UpdateTasks
7 | {
8 | /**
9 | * エイリアスのアップデートが初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 | /**
13 | * ソースのダウンロードを行います。
14 | */
15 | DOWNLOADING_SOURCES,
16 | /**
17 | * エイリアスのアップデートを行います。
18 | */
19 | UPDATING_ALIASES,
20 | }
21 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/update/signals/UpdateFinishedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.update.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.kunlab.kpm.signal.Signal;
6 |
7 | import java.util.Map;
8 |
9 | /**
10 | * エイリアスのアップデートが完了したことを示すシグナルです。
11 | */
12 | @Value
13 | @EqualsAndHashCode(callSuper = false)
14 | public class UpdateFinishedSignal extends Signal
15 | {
16 | /**
17 | * エイリアスの数です。
18 | */
19 | long aliases;
20 | /**
21 | * エイリアスとソースのペアの数です。
22 | */
23 | Map aliasesBySources;
24 | }
25 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/upgrade/UpgradeArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.upgrade;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import org.jetbrains.annotations.Nullable;
6 | import org.kunlab.kpm.installer.interfaces.InstallerArgument;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * アップグレードの引数を格納するクラスです。
12 | */
13 | @Data
14 | @AllArgsConstructor
15 | public class UpgradeArgument implements InstallerArgument
16 | {
17 | /**
18 | * アップグレード対象のプラグインの名前のリストです。
19 | * これをnullにすると、全てのプラグインをアップグレードします。
20 | */
21 | @Nullable
22 | private List targetPlugins;
23 | }
24 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/upgrade/UpgradeErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.upgrade;
2 |
3 | /**
4 | * アップグレードのエラーを表す列挙型です。
5 | */
6 | public enum UpgradeErrorCause
7 | {
8 | /**
9 | * 指定されたプラグインが見つかりませんでした。
10 | */
11 | PLUGIN_NOT_FOUND,
12 | /**
13 | * KPM 自体のアップグレードをしようとしました。
14 | * また、他にアップグレードできるプラグインも存在しません。
15 | */
16 | SELF_UPGRADE_ATTEMPTED,
17 | /**
18 | * プラグインの解決に失敗しました。
19 | */
20 | PLUGIN_RESOLVE_FAILED,
21 | /**
22 | * プラグインのバージョンが定義されていません。
23 | */
24 | PLUGIN_VERSION_NOT_DEFINED,
25 | /**
26 | * プラグインが定義してるバージョンの形式が不正です。
27 | */
28 | PLUGIN_VERSION_FORMAT_MALFORMED,
29 | /**
30 | * プラグインのバージョンがサーバのバージョンと変わらないか、古いです。
31 | */
32 | PLUGIN_IS_OLDER_OR_EQUAL,
33 | /**
34 | * アップグレードできるプラグインが見つかりませんでした。
35 | * このエラーは, 明確なエラーではない可能性があります。
36 | */
37 | UP_TO_DATE,
38 | /**
39 | * アップグレードがキャンセルされました。
40 | */
41 | CANCELLED,
42 | /**
43 | * プラグインが構成等で除外されています。
44 | */
45 | PLUGIN_EXCLUDED,
46 | /**
47 | * アンインストーラのインスタンス化に失敗しました。
48 | */
49 | UNINSTALLER_INSTANTIATION_FAILED,
50 | /**
51 | * アンインストールに失敗しました。
52 | */
53 | UNINSTALL_FAILED,
54 | /**
55 | * インストーラのインスタンス化に失敗しました。
56 | */
57 | INSTALLER_INSTANTIATION_FAILED,
58 | /**
59 | * インストールに失敗しました。
60 | */
61 | INSTALL_FAILED,
62 | /**
63 | * 依存関係の読み込み順序計算に失敗しました。
64 | */
65 | DEPENDENCY_LOAD_ORDER_COMPUTE_FAILED,
66 | }
67 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/upgrade/UpgradeTasks.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.upgrade;
2 |
3 | /**
4 | * アップグレードのタスクを表す列挙型です。
5 | */
6 | public enum UpgradeTasks
7 | {
8 | /**
9 | * アップグレードが初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 | /**
13 | * アップグレード対象の検索中であることを示します。
14 | */
15 | SEARCHING_PLUGIN,
16 | /**
17 | * 環境の状態を確認中であることを示します。
18 | */
19 | CHECKING_ENVIRONMENT,
20 | /**
21 | * アップグレード対象のメタデータの取得中であることを示します。
22 | */
23 | RETRIEVING_METADATA,
24 | /**
25 | * アップグレード対象のクエリの取得中であることを示します。
26 | */
27 | RETRIEVING_UPDATE_QUERY,
28 | /**
29 | * プラグインの解決中であることを示します。
30 | */
31 | RESOLVING_PLUGIN,
32 | /**
33 | * プラグインのアンインストール中であることを示します。
34 | */
35 | UNINSTALLING_PLUGIN,
36 | /**
37 | * プラグインのインストール中であることを示します。
38 | */
39 | INSTALLING_PLUGIN,
40 | /**
41 | * 無効化した依存関係のプラグインの読み込み順の再設定中であることを示します。
42 | */
43 | COMPUTING_DEPENDENCY_LOAD_ORDER,
44 | /**
45 | * 無効化した依存関係のプラグインの再有効化中であることを示します。
46 | */
47 | RE_LOADING_DEPENDENCIES,
48 | }
49 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/upgrade/signals/InstallFailedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.upgrade.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.kunlab.kpm.installer.impls.install.InstallTasks;
6 | import org.kunlab.kpm.installer.interfaces.InstallResult;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * インストールに失敗したことを表すシグナルです。
11 | */
12 | @Data
13 | @EqualsAndHashCode(callSuper = false)
14 | public class InstallFailedSignal extends Signal
15 | {
16 | /**
17 | * 失敗した原因の特定のためのインストール失敗結果です。
18 | */
19 | private final InstallResult failedResult;
20 |
21 | /**
22 | * このままアップグレードを続けるかどうかのフラグです。
23 | */
24 | private boolean continueUpgrade;
25 | }
26 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/upgrade/signals/PluginNotFoundSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.upgrade.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.installer.impls.upgrade.PluginUpgrader;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * 指定されたプラグインが見つからなかったことを示すシグナルです。
11 | */
12 | @Data
13 | @EqualsAndHashCode(callSuper = false)
14 | public class PluginNotFoundSignal extends Signal
15 | {
16 | /**
17 | * 指定されたプラグインの名前です。
18 | */
19 | @NotNull
20 | private final String specifiedPluginName;
21 |
22 | /**
23 | * アップグレードを続けるかどうかのフラグです。
24 | * このフラグをfalseにすると、アップグレードは中断され、{@link PluginUpgrader}は失敗します。
25 | */
26 | private boolean continueUpgrade;
27 |
28 | public PluginNotFoundSignal(@NotNull String specifiedPluginName)
29 | {
30 | this.specifiedPluginName = specifiedPluginName;
31 | this.continueUpgrade = true;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/upgrade/signals/ResolveFailedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.upgrade.signals;
2 |
3 | import lombok.Getter;
4 | import org.bukkit.plugin.Plugin;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.task.tasks.resolve.PluginResolveErrorCause;
7 | import org.kunlab.kpm.task.tasks.resolve.PluginResolveState;
8 |
9 | /**
10 | * 依存関係の解決に失敗したことを示すシグナルです。
11 | */
12 | @Getter
13 | public class ResolveFailedSignal extends PluginNotFoundSignal
14 | {
15 | /**
16 | * 依存関係の解決に失敗したプラグインです。
17 | */
18 | @NotNull
19 | private final Plugin plugin;
20 |
21 | /**
22 | * 依存関係の解決に失敗した理由です。
23 | */
24 | @NotNull
25 | private final PluginResolveErrorCause errorCause;
26 |
27 | /**
28 | * 依存関係の解決に失敗したときの状態です。
29 | */
30 | @NotNull
31 | private final PluginResolveState resolveStateState;
32 |
33 | public ResolveFailedSignal(@NotNull Plugin plugin, @NotNull PluginResolveErrorCause errorCause, @NotNull PluginResolveState resolveStateState)
34 | {
35 | super(plugin.getDescription().getName());
36 | this.plugin = plugin;
37 | this.errorCause = errorCause;
38 | this.resolveStateState = resolveStateState;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/upgrade/signals/UpdateQueryRetrievedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.upgrade.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.bukkit.plugin.Plugin;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.jetbrains.annotations.Nullable;
8 | import org.kunlab.kpm.signal.Signal;
9 |
10 | /**
11 | * アップグレードのクエリを取得したことを示すシグナルです。
12 | */
13 | @Data
14 | @EqualsAndHashCode(callSuper = false)
15 | public class UpdateQueryRetrievedSignal extends Signal
16 | {
17 | /**
18 | * アップグレード対象のプラグインです。
19 | */
20 | @NotNull
21 | private final Plugin plugin;
22 |
23 | /**
24 | * アップグレードに使用するクエリです。
25 | */
26 | @Nullable
27 | private String query;
28 | }
29 |
--------------------------------------------------------------------------------
/KPMPluginInstaller/src/main/java/org/kunlab/kpm/installer/impls/upgrade/signals/UpgradeReadySignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.installer.impls.upgrade.signals;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import org.bukkit.plugin.Plugin;
7 | import org.kunlab.kpm.resolver.interfaces.result.SuccessResult;
8 | import org.kunlab.kpm.signal.Signal;
9 |
10 | import java.util.List;
11 | import java.util.Map;
12 | import java.util.stream.Collectors;
13 |
14 | /**
15 | * アップグレードの準備が完了したことを示すシグナルです。
16 | */
17 | @Data
18 | @EqualsAndHashCode(callSuper = false)
19 | public class UpgradeReadySignal extends Signal
20 | {
21 | private final List plugins;
22 |
23 | public UpgradeReadySignal(Map resolveResult)
24 | {
25 | this.plugins = resolveResult.entrySet().stream()
26 | .map(e -> new ResolvedPluginElement(e.getKey(), e.getValue()))
27 | .collect(Collectors.toList());
28 | }
29 |
30 | public void setContinueUpgrade(boolean value)
31 | {
32 | this.plugins.forEach(e -> e.setContinueUpgrade(value));
33 | }
34 |
35 | @Data
36 | @AllArgsConstructor
37 | public static class ResolvedPluginElement
38 | {
39 | /**
40 | * アップグレード対象のプラグインです。
41 | */
42 | private final Plugin plugin;
43 | /**
44 | * アップグレードのために解決された解決結果です。
45 | */
46 | private final SuccessResult resolveResult;
47 |
48 | private boolean continueUpgrade;
49 |
50 | public ResolvedPluginElement(Plugin plugin, SuccessResult resolveResult)
51 | {
52 | this(plugin, resolveResult, true);
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/KPMResolver/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | org.kunlab.kpm
8 | TeamKunPluginManager
9 | 3.1.0
10 | ../pom.xml
11 |
12 |
13 | KPMResolver
14 |
15 |
16 | 8
17 | 8
18 | UTF-8
19 |
20 |
21 |
22 |
23 | org.kunlab.kpm
24 | KPMCommon
25 | 3.1.0
26 | provided
27 |
28 |
29 | org.kunlab.kpm
30 | KPMModels
31 | 3.1.0
32 | provided
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/KPMResolver/src/main/java/org/kunlab/kpm/resolver/QueryContextImpl.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver;
2 |
3 | import lombok.Builder;
4 | import lombok.Data;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.resolver.interfaces.QueryContext;
8 | import org.kunlab.kpm.versioning.Version;
9 |
10 | @Data
11 | @Builder
12 | class QueryContextImpl implements QueryContext
13 | {
14 | @Nullable
15 | String resolverName;
16 | @NotNull
17 | String query;
18 | @Nullable
19 | Version version;
20 | boolean chooseVersion;
21 |
22 | @Override
23 | public String toString()
24 | {
25 | StringBuilder sb = new StringBuilder();
26 |
27 | if (this.resolverName != null)
28 | sb.append(this.resolverName).append(resolverNameQuerySeparator);
29 | sb.append(this.query);
30 | if (this.version != null)
31 | sb.append(versionEqualQuerySeparator).append(this.version);
32 |
33 | return sb.toString();
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/KPMResolver/src/main/java/org/kunlab/kpm/resolver/impl/AliasPluginResolver.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.impl;
2 |
3 | import org.jetbrains.annotations.NotNull;
4 | import org.kunlab.kpm.alias.interfaces.Alias;
5 | import org.kunlab.kpm.alias.interfaces.AliasProvider;
6 | import org.kunlab.kpm.interfaces.KPMRegistry;
7 | import org.kunlab.kpm.resolver.ErrorCause;
8 | import org.kunlab.kpm.resolver.interfaces.BaseResolver;
9 | import org.kunlab.kpm.resolver.interfaces.QueryContext;
10 | import org.kunlab.kpm.resolver.interfaces.result.MultiResult;
11 | import org.kunlab.kpm.resolver.interfaces.result.ResolveResult;
12 | import org.kunlab.kpm.resolver.result.ErrorResultImpl;
13 | import org.kunlab.kpm.resolver.result.PipeResult;
14 |
15 | /**
16 | * エイリアスを使用してプラグインを解決するクラスです。
17 | */
18 | public class AliasPluginResolver implements BaseResolver
19 | {
20 | private final AliasProvider aliasProvider;
21 |
22 | public AliasPluginResolver(@NotNull KPMRegistry registry)
23 | {
24 | this.aliasProvider = registry.getAliasProvider();
25 | }
26 |
27 | @Override
28 | public ResolveResult resolve(QueryContext query)
29 | {
30 | Alias alias = this.aliasProvider.getQueryByAlias(query.getQuery());
31 |
32 | if (alias == null)
33 | return new ErrorResultImpl(this, ErrorCause.RESOLVER_MISMATCH, ResolveResult.Source.LOCAL_KNOWN);
34 |
35 | query.setQuery(alias.getQuery());
36 | return new PipeResult(this, query);
37 | }
38 |
39 | @Override
40 | public ResolveResult autoPickOnePlugin(MultiResult multiResult)
41 | {
42 | throw new UnsupportedOperationException();
43 | }
44 |
45 | @Override
46 | public boolean isValidResolver(QueryContext query)
47 | {
48 | return true;
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/KPMResolver/src/main/java/org/kunlab/kpm/resolver/impl/RawURLResolver.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.impl;
2 |
3 | import org.kunlab.kpm.resolver.interfaces.QueryContext;
4 | import org.kunlab.kpm.resolver.interfaces.URLResolver;
5 | import org.kunlab.kpm.resolver.interfaces.result.MultiResult;
6 | import org.kunlab.kpm.resolver.interfaces.result.ResolveResult;
7 | import org.kunlab.kpm.resolver.result.AbstractSuccessResult;
8 |
9 | public class RawURLResolver implements URLResolver
10 | {
11 |
12 | @Override
13 | public ResolveResult resolve(QueryContext query)
14 | {
15 | return new RawSuccessResult(query.getQuery());
16 | }
17 |
18 | @Override
19 | public ResolveResult autoPickOnePlugin(MultiResult multiResult)
20 | {
21 | throw new UnsupportedOperationException();
22 | }
23 |
24 | @Override
25 | public String[] getHosts()
26 | {
27 | return new String[0];
28 | }
29 |
30 | private class RawSuccessResult extends AbstractSuccessResult
31 | {
32 | public RawSuccessResult(String downloadUrl)
33 | {
34 | super(RawURLResolver.this, downloadUrl, null, null, ResolveResult.Source.DIRECT);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/KPMResolver/src/main/java/org/kunlab/kpm/resolver/impl/SpigotMCSuccessResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.impl;
2 |
3 | import lombok.Getter;
4 | import org.jetbrains.annotations.NotNull;
5 | import org.jetbrains.annotations.Nullable;
6 | import org.kunlab.kpm.resolver.interfaces.BaseResolver;
7 | import org.kunlab.kpm.resolver.interfaces.result.MarketplaceResult;
8 | import org.kunlab.kpm.resolver.interfaces.result.VersionedResult;
9 | import org.kunlab.kpm.resolver.result.AbstractSuccessResult;
10 |
11 | import java.util.List;
12 |
13 | @Getter
14 | public class SpigotMCSuccessResult extends AbstractSuccessResult implements MarketplaceResult, VersionedResult
15 | {
16 | @NotNull
17 | private final String title;
18 |
19 | @NotNull
20 | private final String url;
21 |
22 | @NotNull
23 | private final String description;
24 |
25 | @NotNull
26 | private final List versions;
27 |
28 | public SpigotMCSuccessResult(@NotNull BaseResolver resolver, @Nullable String version, @NotNull String title, long id, @NotNull String description, @NotNull List versions)
29 | {
30 | super(resolver, "https://apple.api.spiget.org/v2/resources/" + id +
31 | (version != null ? "/versions/" + version: "") + "/download",
32 | null, version, Source.SPIGOT_MC
33 | );
34 | this.title = title;
35 | this.description = description;
36 | this.url = "https://www.spigotmc.org/resources/" + id;
37 | this.versions = versions;
38 |
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/KPMResolver/src/main/java/org/kunlab/kpm/resolver/impl/github/GHURLParseResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.impl.github;
2 |
3 | import lombok.Value;
4 | import org.jetbrains.annotations.NotNull;
5 | import org.jetbrains.annotations.Nullable;
6 |
7 | @Value
8 | class GHURLParseResult
9 | {
10 | @NotNull
11 | String owner;
12 | @NotNull
13 | String repositoryName;
14 | @NotNull
15 | String repository;
16 | @Nullable
17 | String tag;
18 | @Nullable
19 | String finalName;
20 | }
21 |
--------------------------------------------------------------------------------
/KPMResolver/src/main/java/org/kunlab/kpm/resolver/result/AbstractSuccessResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.result;
2 |
3 | import lombok.Data;
4 | import org.jetbrains.annotations.NotNull;
5 | import org.jetbrains.annotations.Nullable;
6 | import org.kunlab.kpm.resolver.interfaces.BaseResolver;
7 | import org.kunlab.kpm.resolver.interfaces.result.SuccessResult;
8 |
9 | /**
10 | * 解決に成功したことを表すクエリ解決結果です。
11 | */
12 | @Data
13 | public abstract class AbstractSuccessResult implements SuccessResult
14 | {
15 | @NotNull
16 | private final String downloadUrl;
17 |
18 | @Nullable
19 | private final String fileName;
20 |
21 | @Nullable
22 | private final String version;
23 |
24 | @NotNull
25 | private final Source source;
26 |
27 | @NotNull
28 | private final BaseResolver resolver;
29 |
30 | public AbstractSuccessResult(BaseResolver resolver, @NotNull String downloadUrl, @NotNull Source source)
31 | {
32 | this(resolver, downloadUrl, null, null, source);
33 | }
34 |
35 | public AbstractSuccessResult(@NotNull BaseResolver resolver, @NotNull String downloadUrl, @Nullable String fileName, @Nullable String version, @NotNull Source source)
36 | {
37 | this.resolver = resolver;
38 | this.downloadUrl = downloadUrl;
39 | this.fileName = fileName;
40 | this.version = version;
41 | this.source = source;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/KPMResolver/src/main/java/org/kunlab/kpm/resolver/result/ErrorResultImpl.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.result;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.Getter;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.jetbrains.annotations.Nullable;
8 | import org.kunlab.kpm.resolver.ErrorCause;
9 | import org.kunlab.kpm.resolver.interfaces.BaseResolver;
10 | import org.kunlab.kpm.resolver.interfaces.result.ErrorResult;
11 | import org.kunlab.kpm.resolver.interfaces.result.ResolveResult;
12 |
13 | @AllArgsConstructor
14 | @EqualsAndHashCode
15 | @Getter
16 | public class ErrorResultImpl implements ErrorResult
17 | {
18 | @Nullable
19 | private final BaseResolver resolver;
20 | @NotNull
21 | private final ErrorCause cause;
22 | @NotNull
23 | private final ResolveResult.Source source;
24 | @Nullable
25 | private final String message;
26 |
27 | public ErrorResultImpl(@Nullable BaseResolver resolver, @NotNull ErrorCause cause, @NotNull Source source)
28 | {
29 | this(resolver, cause, source, null);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/KPMResolver/src/main/java/org/kunlab/kpm/resolver/result/MultiResultImpl.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.result;
2 |
3 | import lombok.Value;
4 | import org.kunlab.kpm.resolver.interfaces.BaseResolver;
5 | import org.kunlab.kpm.resolver.interfaces.result.MultiResult;
6 | import org.kunlab.kpm.resolver.interfaces.result.ResolveResult;
7 |
8 | /**
9 | * 解決結果が複数ある場合に返されるクラスです。
10 | */
11 | @Value
12 | public class MultiResultImpl implements MultiResult
13 | {
14 | /**
15 | * この解決を提供したリゾルバです。
16 | */
17 | BaseResolver resolver;
18 | /**
19 | * 解決結果の配列です。
20 | */
21 | ResolveResult[] results;
22 | }
23 |
--------------------------------------------------------------------------------
/KPMResolver/src/main/java/org/kunlab/kpm/resolver/result/PipeResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.resolver.result;
2 |
3 | import lombok.Value;
4 | import org.jetbrains.annotations.NotNull;
5 | import org.kunlab.kpm.resolver.PluginResolverImpl;
6 | import org.kunlab.kpm.resolver.interfaces.BaseResolver;
7 | import org.kunlab.kpm.resolver.interfaces.QueryContext;
8 | import org.kunlab.kpm.resolver.interfaces.result.ResolveResult;
9 |
10 | /**
11 | * 他のリゾルバに解決を委譲することを表す解決結果です。
12 | * 通常は内部でのみで使用され、{@link PluginResolverImpl#resolve(String)} から返されることはありません。
13 | */
14 | @Value
15 | public class PipeResult implements ResolveResult
16 | {
17 | /**
18 | * この解決を提供したリゾルバです。
19 | */
20 | @NotNull
21 | BaseResolver resolver;
22 | /**
23 | * リゾルバがクエリを改変する場合に使用されるクエリです。
24 | */
25 | @NotNull
26 | QueryContext query;
27 | }
28 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/AbstractTaskResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.task.interfaces.TaskResult;
8 |
9 | /**
10 | * 実行したタスクの結果を表します。
11 | *
12 | * @param タスクの状態の型
13 | * @param タスクのエラー原因の型
14 | */
15 | @AllArgsConstructor
16 | @Getter
17 | public abstract class AbstractTaskResult, EC extends Enum>> implements TaskResult
18 | {
19 | /**
20 | * タスクが成功したかどうかです。
21 | */
22 | private final boolean success;
23 | /**
24 | * タスクの状態です。
25 | */
26 | @NotNull
27 | private final S state;
28 |
29 | /**
30 | * タスクのエラー原因です。
31 | * タスクが成功した場合は {@code null} です。
32 | */
33 | @Nullable
34 | private final EC errorCause;
35 | }
36 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/TaskFailedException.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task;
2 |
3 | import lombok.Getter;
4 | import org.kunlab.kpm.task.interfaces.TaskResult;
5 |
6 | /**
7 | * タスクが失敗したことを表すクラスです。
8 | */
9 | public class TaskFailedException extends Exception
10 | {
11 | @Getter
12 | private final TaskResult extends Enum>, ? extends Enum>> result;
13 |
14 | public TaskFailedException(TaskResult extends Enum>, ? extends Enum>> result)
15 | {
16 | this.result = result;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/source/download/SourceDownloadArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.source.download;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.kunlab.kpm.task.interfaces.TaskArgument;
6 |
7 | import java.util.Map;
8 |
9 | /**
10 | * ソースファイルのダウンロードを行うタスクの引数です。
11 | */
12 | @Value
13 | @EqualsAndHashCode(callSuper = false)
14 | public class SourceDownloadArgument implements TaskArgument
15 | {
16 | /**
17 | * エイリアスのソースのURLです。
18 | * キーはリモートの名前、値はHTTP(S)サーバのURLです。
19 | */
20 | Map remotes;
21 | }
22 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/source/download/SourceDownloadErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.source.download;
2 |
3 | /**
4 | * ソースファイルのダウンロードに失敗した理由を表します。
5 | */
6 | public enum SourceDownloadErrorCause
7 | {
8 | /**
9 | * すべてのダウンロードに失敗しました。
10 | */
11 | ALL_DOWNLOAD_FAILED,
12 | }
13 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/source/download/SourceDownloadResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.source.download;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import net.kunmc.lab.peyangpaperutils.lib.utils.Pair;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.jetbrains.annotations.Nullable;
8 | import org.kunlab.kpm.task.AbstractTaskResult;
9 |
10 | import java.net.URI;
11 | import java.nio.file.Path;
12 | import java.util.Map;
13 |
14 | /**
15 | * ソースファイルのダウンロードを行うタスクの結果です。
16 | */
17 | @Value
18 | @EqualsAndHashCode(callSuper = true)
19 | public class SourceDownloadResult extends AbstractTaskResult
20 | {
21 | /**
22 | * ダウンロードしたソースの名前とパスのマップです。
23 | */
24 | Map> downloadedSources;
25 |
26 | public SourceDownloadResult(boolean success, @NotNull SourceDownloadState state,
27 | @Nullable SourceDownloadErrorCause errorCause, Map> downloadedSources)
28 | {
29 | super(success, state, errorCause);
30 | this.downloadedSources = downloadedSources;
31 | }
32 |
33 | public SourceDownloadResult(boolean success, @NotNull SourceDownloadState state, @Nullable SourceDownloadErrorCause errorCause)
34 | {
35 | this(success, state, errorCause, null);
36 | }
37 |
38 | public SourceDownloadResult(boolean success, @NotNull SourceDownloadState state, Map> downloadedSources)
39 | {
40 | this(success, state, null, downloadedSources);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/source/download/SourceDownloadState.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.source.download;
2 |
3 | /**
4 | * ソースファイルのダウンロードの状態を表します。
5 | */
6 | public enum SourceDownloadState
7 | {
8 | /**
9 | * ソースファイルのダウンロードが初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 | /**
13 | * URLの解析中であることを示します。
14 | */
15 | ANALYZING_URLS,
16 | /**
17 | * ソースをダウンロード中であることを示します。
18 | */
19 | DOWNLOADING_SOURCES,
20 | }
21 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/source/download/signals/InvalidRemoteSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.source.download.signals;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | import java.net.URL;
10 |
11 | /**
12 | * リモートが不正だった場合に送信されるシグナルです。
13 | */
14 | @AllArgsConstructor
15 | @Getter
16 | public abstract class InvalidRemoteSignal extends Signal
17 | {
18 | /**
19 | * リモートの名前です。
20 | */
21 | @NotNull
22 | private final String remoteName;
23 | /**
24 | * リモートのURLです。
25 | */
26 | @NotNull
27 | private final String remoteURL;
28 |
29 | /**
30 | * URLのオブジェクトです。
31 | */
32 | @Nullable
33 | private final URL urlObject;
34 |
35 | public InvalidRemoteSignal(@NotNull String remoteName, @NotNull String remoteURL)
36 | {
37 | this(remoteName, remoteURL, null);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/source/download/signals/MalformedURLSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.source.download.signals;
2 |
3 | /**
4 | * 不正なURLが指定された場合に送信されるシグナルです。
5 | */
6 | public class MalformedURLSignal extends InvalidRemoteSignal
7 | {
8 | public MalformedURLSignal(String remoteName, String remoteURL)
9 | {
10 | super(remoteName, remoteURL);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/source/download/signals/SourceDownloadFailedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.source.download.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.kunlab.kpm.signal.Signal;
6 | import org.kunlab.kpm.task.tasks.download.DownloadResult;
7 |
8 | /**
9 | * ソースファイルのダウンロードに失敗したことを示すシグナルです。
10 | */
11 | @Value
12 | @EqualsAndHashCode(callSuper = false)
13 | public class SourceDownloadFailedSignal extends Signal
14 | {
15 | String remoteName;
16 | DownloadResult downloadResult;
17 | }
18 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/source/download/signals/UnsupportedProtocolSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.source.download.signals;
2 |
3 | import lombok.Getter;
4 |
5 | import java.net.URL;
6 |
7 | /**
8 | * サポートされていないプロトコルが指定された場合に送信されるシグナルです。
9 | */
10 | @Getter
11 | public class UnsupportedProtocolSignal extends InvalidRemoteSignal
12 | {
13 | /**
14 | * プロトコル名です。
15 | */
16 | private final String protocol;
17 |
18 | public UnsupportedProtocolSignal(String remoteName, URL remoteURL)
19 | {
20 | super(remoteName, remoteURL.toString(), remoteURL);
21 | this.protocol = remoteURL.getProtocol();
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/update/UpdateAliasesArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.update;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import net.kunmc.lab.peyangpaperutils.lib.utils.Pair;
6 | import org.kunlab.kpm.task.interfaces.TaskArgument;
7 |
8 | import java.net.URI;
9 | import java.nio.file.Path;
10 | import java.util.Map;
11 |
12 | /**
13 | * エイリアスのアップデートを行うタスクの引数です。
14 | */
15 | @Value
16 | @EqualsAndHashCode(callSuper = false)
17 | public class UpdateAliasesArgument implements TaskArgument
18 | {
19 | /**
20 | * エイリアスのソースファイルの名前とペアのマップです。
21 | * ペアの左辺はリモートのURL、右辺はローカルのパスです。
22 | */
23 | Map> sources;
24 | }
25 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/update/UpdateAliasesErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.update;
2 |
3 | /**
4 | * エイリアスのアップデートに失敗した理由を表します。
5 | */
6 | public enum UpdateAliasesErrorCause
7 | {
8 | /**
9 | * すべてのアップデートに失敗しました。
10 | */
11 | ALL_UPDATE_FAILED,
12 | }
13 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/update/UpdateAliasesResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.update;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.task.AbstractTaskResult;
8 |
9 | import java.util.Map;
10 |
11 | /**
12 | * エイリアスのアップデートを行うタスクの結果です。
13 | */
14 | @Value
15 | @EqualsAndHashCode(callSuper = true)
16 | public class UpdateAliasesResult extends AbstractTaskResult
17 | {
18 | boolean warn;
19 | long aliasesCount;
20 | Map aliasesCountBySource;
21 |
22 | public UpdateAliasesResult(boolean success, @NotNull UpdateAliasesState state, @Nullable UpdateAliasesErrorCause errorCause,
23 | boolean warn, long aliasesCount, Map aliasesCountBySource)
24 | {
25 | super(success, state, errorCause);
26 | this.warn = warn;
27 | this.aliasesCount = aliasesCount;
28 | this.aliasesCountBySource = aliasesCountBySource;
29 | }
30 |
31 | public UpdateAliasesResult(boolean success, @NotNull UpdateAliasesState state,
32 | boolean warn, long aliasesCount, Map aliasesCountBySource)
33 | {
34 | this(success, state, null, warn, aliasesCount, aliasesCountBySource);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/update/UpdateAliasesState.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.update;
2 |
3 | /**
4 | * エイリアスのアップデートの状態を表します。
5 | */
6 | public enum UpdateAliasesState
7 | {
8 | /**
9 | * エイリアスのアップデートが初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 | /**
13 | * エイリアスのアップデート中であることを示します。
14 | */
15 | UPDATING,
16 | }
17 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/update/signals/AliasUpdateSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.update.signals;
2 |
3 | import lombok.AccessLevel;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Data;
6 | import lombok.EqualsAndHashCode;
7 | import org.jetbrains.annotations.NotNull;
8 | import org.kunlab.kpm.signal.Signal;
9 |
10 | import java.io.UncheckedIOException;
11 | import java.net.MalformedURLException;
12 | import java.net.URI;
13 | import java.net.URL;
14 |
15 | @Data
16 | @EqualsAndHashCode(callSuper = false)
17 | @AllArgsConstructor(access = AccessLevel.PRIVATE)
18 | public class AliasUpdateSignal extends Signal
19 | {
20 | @NotNull
21 | private final String source;
22 | @NotNull
23 | private final URL sourceURL;
24 | @NotNull
25 | private final String name;
26 |
27 | private boolean skip;
28 | private String alias;
29 |
30 | public AliasUpdateSignal(@NotNull String source, @NotNull URI sourceURI, @NotNull String name,
31 | @NotNull String alias)
32 | {
33 | this.source = source;
34 | this.name = name;
35 |
36 | this.skip = false;
37 | this.alias = alias;
38 |
39 | try
40 | {
41 | this.sourceURL = sourceURI.toURL();
42 | }
43 | catch (MalformedURLException e)
44 | {
45 | throw new UncheckedIOException("Invalid source URI", e);
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/update/signals/InvalidSourceSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.update.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 |
8 | import java.nio.file.Path;
9 |
10 | /**
11 | * ソースファイルが不正だった場合に送信されるシグナルです。
12 | */
13 | @Value
14 | @EqualsAndHashCode(callSuper = true)
15 | public class InvalidSourceSignal extends SourceSignal
16 | {
17 | /**
18 | * エラーの原因です。
19 | */
20 | ErrorCause errorCause;
21 |
22 | public InvalidSourceSignal(@NotNull String sourceName, @NotNull Path sourcePath, @Nullable String sourceURL, ErrorCause errorCause)
23 | {
24 | super(sourceName, sourcePath, sourceURL);
25 | this.errorCause = errorCause;
26 | }
27 |
28 | /**
29 | * エラーの理由です。
30 | */
31 | public enum ErrorCause
32 | {
33 | /**
34 | * ソースファイルが不正な形式です。
35 | */
36 | SOURCE_FILE_MALFORMED,
37 | /**
38 | * I/Oエラーが発生しました。
39 | */
40 | IO_ERROR,
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/update/signals/SourcePreparedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.update.signals;
2 |
3 | import lombok.Getter;
4 | import lombok.Setter;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 |
8 | import java.nio.file.Path;
9 |
10 | /**
11 | * ソースが準備されたことを示すシグナルです。
12 | */
13 | @Getter
14 | @Setter
15 | public class SourcePreparedSignal extends SourceSignal
16 | {
17 | private boolean skip;
18 |
19 | public SourcePreparedSignal(@NotNull String sourceName, @NotNull Path sourcePath, @Nullable String sourceURL)
20 | {
21 | super(sourceName, sourcePath, sourceURL);
22 |
23 | this.skip = true;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/alias/update/signals/SourceSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.alias.update.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | import java.nio.file.Path;
10 |
11 | @Data
12 | @EqualsAndHashCode(callSuper = false)
13 | abstract class SourceSignal extends Signal
14 | {
15 | /**
16 | * ソースの名前です。
17 | */
18 | @NotNull
19 | private final String sourceName;
20 | /**
21 | * ソースファイルのパスです。
22 | */
23 | @NotNull
24 | private final Path sourcePath;
25 | /**
26 | * ソースファイルのURLです。
27 | */
28 | @Nullable
29 | private final String sourceURL;
30 | }
31 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/DependencyElementImpl.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Value;
5 | import org.bukkit.plugin.PluginDescriptionFile;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.jetbrains.annotations.Nullable;
8 | import org.kunlab.kpm.kpminfo.KPMInformationFile;
9 | import org.kunlab.kpm.task.interfaces.dependencies.DependencyElement;
10 |
11 | import java.nio.file.Path;
12 |
13 | @Value
14 | @AllArgsConstructor
15 | public class DependencyElementImpl implements DependencyElement
16 | {
17 | @NotNull
18 | String pluginName;
19 | @NotNull
20 | Path pluginPath;
21 | @NotNull
22 | PluginDescriptionFile pluginDescription;
23 | @Nullable
24 | KPMInformationFile kpmInfoFile;
25 | @Nullable
26 | String query;
27 | }
28 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/collector/DependsCollectErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.collector;
2 |
3 | /**
4 | * 依存関係の取得に失敗した理由を表します。
5 | */
6 | public enum DependsCollectErrorCause
7 | {
8 | /**
9 | * いくつかの依存関係の解決に失敗しました。
10 | */
11 | SOME_DEPENDENCIES_COLLECT_FAILED,
12 | }
13 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/collector/DependsCollectResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.collector;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.task.AbstractTaskResult;
8 | import org.kunlab.kpm.task.interfaces.dependencies.DependencyElement;
9 |
10 | import java.util.List;
11 |
12 | /**
13 | * 依存関係の解決結果を表します。
14 | */
15 | @Value
16 | @EqualsAndHashCode(callSuper = true)
17 | public class DependsCollectResult extends AbstractTaskResult
18 | {
19 | /**
20 | * 依存関係解決対象のプラグインです。
21 | */
22 | @NotNull
23 | String targetPlugin;
24 |
25 | /**
26 | * 依存関係の要素のリストです。解決に失敗した場合は空のリストです。
27 | *
28 | * @see #isSuccess()
29 | */
30 | @NotNull
31 | List collectedPlugins;
32 |
33 | /**
34 | * 解決に失敗した依存関係の要素のリストです。解決に成功した場合は空のリストです。
35 | *
36 | * @see #isSuccess()
37 | */
38 | @NotNull
39 | List collectFailedPlugins;
40 |
41 | public DependsCollectResult(@NotNull DependsCollectState taskState,
42 | @Nullable DependsCollectErrorCause errorCause, @NotNull String targetPlugin,
43 | @NotNull List collectedPlugins,
44 | @NotNull List collectFailedPlugins)
45 | {
46 | super(collectFailedPlugins.isEmpty(), taskState, errorCause);
47 | this.targetPlugin = targetPlugin;
48 | this.collectedPlugins = collectedPlugins;
49 | this.collectFailedPlugins = collectFailedPlugins;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/collector/DependsCollectState.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.collector;
2 |
3 | /**
4 | * 依存関係取得の状態を表す列挙型です。
5 | */
6 | public enum DependsCollectState
7 | {
8 | /**
9 | * 依存関係の取得が初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 |
13 | /**
14 | * 依存関係の解決中であることを示します。
15 | */
16 | RESOLVING_DEPENDS,
17 | /**
18 | * 依存関係のダウンロード中であることを示します。
19 | */
20 | DOWNLOADING_DEPENDS,
21 |
22 | /**
23 | * 依存関係の依存関係が検出された場合、再帰的に解決していることを示します。
24 | */
25 | COLLECTING_DEPENDS_DEPENDS // Dependency's depends.
26 | }
27 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/collector/signals/DependencyCollectDependencysDependsFailedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.collector.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * 依存関係の依存関係を取得する際に失敗したことを示すシグナルです。
12 | */
13 | @Value
14 | @EqualsAndHashCode(callSuper = false)
15 | public class DependencyCollectDependencysDependsFailedSignal extends Signal
16 | {
17 | /**
18 | * 対象のプラグインの名前です。
19 | */
20 | @NotNull
21 | String pluginName;
22 | /**
23 | * 取得に失敗した依存関係の名前です。
24 | */
25 | @NotNull
26 | List collectFailedDependencies;
27 | }
28 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/collector/signals/DependencyCollectFailedSignalBase.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.collector.signals;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 | import org.kunlab.kpm.signal.Signal;
6 |
7 | /**
8 | * 依存関係の取得に失敗したことを示すシグナルです。
9 | * このシグナルは基礎的なものであり、具体的な失敗の理由はサブクラスによって表現されます。
10 | */
11 | @AllArgsConstructor
12 | @Getter
13 | public abstract class DependencyCollectFailedSignalBase extends Signal
14 | {
15 | /**
16 | * 取得に失敗した依存関係の名前です。
17 | */
18 | private final String failedDependency;
19 | }
20 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/collector/signals/DependencyDownloadFailedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.collector.signals;
2 |
3 | import lombok.Getter;
4 | import org.jetbrains.annotations.NotNull;
5 |
6 | /**
7 | * 依存関係のダウンロードに失敗したことを示すシグナルです。
8 | */
9 | public class DependencyDownloadFailedSignal extends DependencyCollectFailedSignalBase
10 | {
11 | /**
12 | * ダウンロード元のURLです。
13 | */
14 | @NotNull
15 | @Getter
16 | private final String url;
17 |
18 | public DependencyDownloadFailedSignal(@NotNull String failedDependency, @NotNull String url)
19 | {
20 | super(failedDependency);
21 |
22 | this.url = url;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/collector/signals/DependencyLoadDescriptionFailedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.collector.signals;
2 |
3 | /**
4 | * 依存関係のプラグイン情報ファイルの読み込みに失敗したことを示すシグナルです。
5 | */
6 | public class DependencyLoadDescriptionFailedSignal extends DependencyCollectFailedSignalBase
7 | {
8 | public DependencyLoadDescriptionFailedSignal(String failedDependency)
9 | {
10 | super(failedDependency);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/collector/signals/DependencyNameMismatchSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.collector.signals;
2 |
3 | import lombok.Getter;
4 |
5 | /**
6 | * 依存関係解決時に使用された名前と、プラグインが開示している名前が一致しなかったことを示すシグナルです。
7 | */
8 | public class DependencyNameMismatchSignal extends DependencyCollectFailedSignalBase
9 | {
10 | /**
11 | * 期待されたプラグインの名前です。
12 | */
13 | @Getter
14 | private final String exceptedDependencyName;
15 |
16 | public DependencyNameMismatchSignal(String actualDependencyName, String exceptedDependencyName)
17 | {
18 | super(actualDependencyName);
19 | this.exceptedDependencyName = exceptedDependencyName;
20 | }
21 |
22 | /**
23 | * 実際の依存関係の名前を取得します。
24 | *
25 | * @return 実際の依存関係の名前
26 | */
27 | public String getActualDependencyName()
28 | {
29 | return this.getFailedDependency();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/collector/signals/DependencyResolveFailedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.collector.signals;
2 |
3 | /**
4 | * 依存関係の解決に失敗したことを示すシグナルです。
5 | */
6 | public class DependencyResolveFailedSignal extends DependencyCollectFailedSignalBase
7 | {
8 | public DependencyResolveFailedSignal(String failedDependency)
9 | {
10 | super(failedDependency);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/collector/signals/DependsCollectFailedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.collector.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.kunlab.kpm.signal.Signal;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * 依存関係の取得に失敗したことを示すシグナルです。
11 | * 注意:このシグナルは {@link DependencyCollectFailedSignalBase} とは違い個別には送信されず、依存関係の解決タスク終了後に一度送信されます。
12 | */
13 | @Value
14 | @EqualsAndHashCode(callSuper = false)
15 | public class DependsCollectFailedSignal extends Signal
16 | {
17 | /**
18 | * 取得に失敗した依存関係の名前です。
19 | */
20 | List collectFailedPlugins;
21 | }
22 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/collector/signals/DependsDownloadFinishedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.collector.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 | import org.kunlab.kpm.task.tasks.download.DownloadResult;
8 |
9 | import java.util.Map;
10 |
11 | /**
12 | * 依存関係のダウンロードがすべて完了したことを示すシグナルです。
13 | */
14 | @Value
15 | @EqualsAndHashCode(callSuper = false)
16 | public class DependsDownloadFinishedSignal extends Signal
17 | {
18 | /**
19 | * ダウンロード結果です。
20 | */
21 | @NotNull
22 | Map downloads;
23 | }
24 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/collector/signals/DependsEnumeratedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.collector.signals;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.Value;
6 | import org.kunlab.kpm.resolver.interfaces.QueryContext;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | import java.util.List;
10 | import java.util.Map;
11 |
12 | /**
13 | * 依存関係が列挙されたことを示すシグナルです。
14 | */
15 | @AllArgsConstructor
16 | @Value
17 | @EqualsAndHashCode(callSuper = false)
18 | public class DependsEnumeratedSignal extends Signal
19 | {
20 | /**
21 | * 列挙された依存関係。
22 | */
23 | Map dependencies;
24 | /**
25 | * 既にサーバーにインストールされている依存関係。
26 | */
27 | List ignoredDependencies; // it means already installed or already collected
28 | }
29 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/computer/DependsComputeOrderArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.computer;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 | import org.kunlab.kpm.task.interfaces.TaskArgument;
6 | import org.kunlab.kpm.task.interfaces.dependencies.DependencyElement;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * 依存関係の読み込み順序を計算する際に使用される引数を表します。
12 | */
13 | @AllArgsConstructor
14 | public class DependsComputeOrderArgument implements TaskArgument
15 | {
16 | /**
17 | * 計算対象の依存関係のリストです。
18 | */
19 | @Getter
20 | private final List collectedDependencies;
21 | }
22 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/computer/DependsComputeOrderErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.computer;
2 |
3 | /**
4 | * 依存関係の読み込み順序を計算する際に発生したエラーの原因を表します。
5 | */
6 | public enum DependsComputeOrderErrorCause
7 | {
8 | }
9 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/computer/DependsComputeOrderResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.computer;
2 |
3 | import lombok.Getter;
4 | import org.jetbrains.annotations.NotNull;
5 | import org.jetbrains.annotations.Nullable;
6 | import org.kunlab.kpm.task.AbstractTaskResult;
7 | import org.kunlab.kpm.task.interfaces.dependencies.DependencyElement;
8 |
9 | import java.util.List;
10 |
11 | /**
12 | * 依存関係の読み込み順序を計算した結果を表します。
13 | */
14 | public class DependsComputeOrderResult extends AbstractTaskResult
15 | {
16 | /**
17 | * 計算された依存関係の読み込み順序リストです。
18 | */
19 | @Getter
20 | @NotNull
21 | private final List order;
22 |
23 | public DependsComputeOrderResult(boolean success, @NotNull DependsComputeOrderState taskState,
24 | @Nullable DependsComputeOrderErrorCause errorCause,
25 | @NotNull List order)
26 | {
27 | super(success, taskState, errorCause);
28 | this.order = order;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/computer/DependsComputeOrderState.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.computer;
2 |
3 | /**
4 | * 依存関係の読み込み順序計算の状態を表す列挙型です。
5 | */
6 | public enum DependsComputeOrderState
7 | {
8 | /**
9 | * 依存関係の読み込み順序計算の初期化が完了したことを示します。
10 | */
11 | INITIALIZED,
12 |
13 | /**
14 | * 依存関係マップの構築中であることを示します。
15 | */
16 | CREATING_DEPENDENCY_MAP,
17 | /**
18 | * 依存関係の読み込み順序の計算中であることを示します。
19 | */
20 | COMPUTING_DEPENDENCY_LOAD_ORDER
21 | }
22 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/dependencies/computer/signals/DependsLoadOrderComputingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.dependencies.computer.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 | import org.kunlab.kpm.task.interfaces.dependencies.DependencyElement;
8 |
9 | import java.util.Collections;
10 | import java.util.List;
11 |
12 | /**
13 | * 依存関係の読み込み順序を計算する際に発生するシグナルを表します。
14 | */
15 | @Data
16 | @EqualsAndHashCode(callSuper = false)
17 | public class DependsLoadOrderComputingSignal extends Signal
18 | {
19 | /**
20 | * 指定された依存関係のリストです。
21 | */
22 | @NotNull
23 | private final List dependencies;
24 |
25 | /**
26 | * 順序の計算前に発生するシグナルです。
27 | * 注意: {@link #getDependencies()} から取得される依存関係リストは、{@link Collections#unmodifiableList(List)} でラップされています。
28 | */
29 | public static class Pre extends DependsLoadOrderComputingSignal
30 | {
31 | public Pre(final List extends DependencyElement> dependencies)
32 | {
33 | super(Collections.unmodifiableList(dependencies));
34 | }
35 | }
36 |
37 | /**
38 | * 順序の計算に成功したことを示すシグナルです。
39 | * 計算結果を書き換えることで、読み込み順序を変更できます。
40 | */
41 | public static class Post extends DependsLoadOrderComputingSignal
42 | {
43 | public Post(final List dependencies)
44 | {
45 | super(dependencies);
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/description/DescriptionLoadArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.description;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.task.interfaces.TaskArgument;
7 |
8 | import java.nio.file.Path;
9 |
10 | /**
11 | * プラグイン情報ファイルを読み込む際に使用される引数を表します。
12 | */
13 | @Value
14 | @EqualsAndHashCode(callSuper = false)
15 | public class DescriptionLoadArgument implements TaskArgument
16 | {
17 | /**
18 | * プラグイン情報ファイルのパスです。
19 | */
20 | @NotNull
21 | Path pluginFile;
22 |
23 | public DescriptionLoadArgument(@NotNull Path pluginFile)
24 | {
25 | this.pluginFile = pluginFile;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/description/DescriptionLoadErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.description;
2 |
3 | /**
4 | * プラグイン情報ファイルの読み込みに失敗した際のエラーの原因を表します。
5 | */
6 | public enum DescriptionLoadErrorCause
7 | {
8 | /**
9 | * 指定されたファイルがプラグインではないか、 plugin.yml が存在しません。
10 | */
11 | NOT_A_PLUGIN,
12 | /**
13 | * 不正なプラグイン情報ファイルです。
14 | */
15 | INVALID_DESCRIPTION,
16 | /**
17 | * {@link java.io.IOException} が発生しました。
18 | */
19 | IO_EXCEPTION
20 | }
21 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/description/DescriptionLoadResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.description;
2 |
3 | import lombok.Getter;
4 | import org.bukkit.plugin.PluginDescriptionFile;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.task.AbstractTaskResult;
8 |
9 | import java.nio.file.Path;
10 |
11 | /**
12 | * プラグイン情報ファイルの読み込み結果を表します。
13 | */
14 | @Getter // TODO: make @Value
15 | public class DescriptionLoadResult extends AbstractTaskResult
16 | {
17 | /**
18 | * プラグインファイルの場所です。
19 | */
20 | @NotNull
21 | private final Path pluginFile;
22 | /**
23 | * 読み込まれた、プラグイン情報ファイルの概念的なオブジェクトです。
24 | */
25 | @Nullable
26 | private final PluginDescriptionFile description;
27 |
28 | public DescriptionLoadResult(boolean success, @NotNull DescriptionLoadState taskState,
29 | @Nullable DescriptionLoadErrorCause errorCause,
30 | @NotNull Path pluginFile, @Nullable PluginDescriptionFile description)
31 | {
32 | super(success, taskState, errorCause);
33 |
34 | this.pluginFile = pluginFile;
35 | this.description = description;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/description/DescriptionLoadState.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.description;
2 |
3 | /**
4 | * プラグイン情報ファイルの読み込みの状態を表します。
5 | */
6 | public enum DescriptionLoadState
7 | {
8 | /**
9 | * プラグイン情報ファイルの読み込みが初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 |
13 | /**
14 | * プラグイン情報ファイルの読み込み中であることを示します。
15 | */
16 | LOADING_PLUGIN_DESCRIPTION
17 | }
18 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/description/signals/LoadPluginDescriptionSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.description.signals;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | import java.nio.file.Path;
10 |
11 | /**
12 | * プラグイン情報ファイルを読み込むときに発生するシグナルです。
13 | */
14 | @Data
15 | @AllArgsConstructor
16 | @EqualsAndHashCode(callSuper = false)
17 | public class LoadPluginDescriptionSignal extends Signal
18 | {
19 | /**
20 | * プラグイン情報ファイルのパスです。
21 | * これを変更すると、読み込まれるプラグインを変更できます。
22 | */
23 | @NotNull
24 | private Path pluginFile;
25 | }
26 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/download/DownloadArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.download;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.task.interfaces.TaskArgument;
8 |
9 | import java.nio.file.Path;
10 |
11 | /**
12 | * ダウンロードの引数です。
13 | */
14 | @Value
15 | @EqualsAndHashCode(callSuper = false)
16 | public class DownloadArgument implements TaskArgument
17 | {
18 | /**
19 | * ダウンロードするURLです。
20 | */
21 | @NotNull
22 | String url;
23 |
24 | /**
25 | * ダウンロード先のパスです。
26 | */
27 | @Nullable
28 | Path path;
29 |
30 | public DownloadArgument(@NotNull String url)
31 | {
32 | this.url = url;
33 | this.path = null;
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/download/DownloadErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.download;
2 |
3 | /**
4 | * ダウンロードに失敗した際のエラーの原因を表します。
5 | */
6 | public enum DownloadErrorCause
7 | {
8 | /**
9 | * サーバから、無効なレスポンスを受け取りました。
10 | */
11 | ILLEGAL_HTTP_RESPONSE,
12 | /**
13 | * Body が空でした。
14 | */
15 | NO_BODY_IN_RESPONSE,
16 | /**
17 | * {@link java.io.IOException} が発生しました。
18 | */
19 | IO_EXCEPTION,
20 | /**
21 | * 不明なエラーが発生しました。
22 | */
23 | UNKNOWN_ERROR
24 | }
25 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/download/DownloadResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.download;
2 |
3 | import lombok.Getter;
4 | import org.jetbrains.annotations.NotNull;
5 | import org.jetbrains.annotations.Nullable;
6 | import org.kunlab.kpm.task.AbstractTaskResult;
7 |
8 | import java.nio.file.Path;
9 |
10 | /**
11 | * ダウンロードの結果を表すクラスです。
12 | */
13 | @Getter
14 | public class DownloadResult extends AbstractTaskResult
15 | {
16 | /**
17 | * ダウンロード元のURLです。
18 | */
19 | @NotNull
20 | private final String url;
21 |
22 | /**
23 | * ダウンロード先のファイルのパスです。
24 | */
25 | @NotNull
26 | private final Path path;
27 | /**
28 | * ダウンロードしたファイルのサイズです。
29 | */
30 | private final long totalSize;
31 |
32 | /**
33 | * ダウンロードごとに発行される一意なIDです。
34 | */
35 | @NotNull
36 | private final String downloadID;
37 |
38 | public DownloadResult(boolean success, @NotNull DownloadState taskState, @NotNull String url, @NotNull Path path,
39 | long totalSize, @NotNull String downloadID, @Nullable DownloadErrorCause errorCause)
40 | {
41 | super(success, taskState, errorCause);
42 | this.url = url;
43 | this.path = path;
44 | this.totalSize = totalSize;
45 | this.downloadID = downloadID;
46 | }
47 |
48 | public DownloadResult(boolean success, @NotNull DownloadState taskState, @NotNull String url, @NotNull Path path, long totalSize,
49 | @NotNull String downloadID)
50 | {
51 | this(success, taskState, url, path, totalSize, downloadID, null);
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/download/DownloadState.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.download;
2 |
3 | /**
4 | * ダウンロードの状態を表します。
5 | */
6 | public enum DownloadState
7 | {
8 | /**
9 | * ダウンロードが初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 |
13 | /**
14 | * ダウンロードが開始中であることを示します。
15 | */
16 | START_DOWNLOADING,
17 | /**
18 | * ダウンロード中であることを示します。
19 | */
20 | DOWNLOADING,
21 | }
22 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/download/signals/DownloadErrorSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.download.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.task.tasks.download.DownloadErrorCause;
8 |
9 | /**
10 | * ダウンロードに失敗したことを示すシグナルです。
11 | */
12 | @Value
13 | @EqualsAndHashCode(callSuper = true)
14 | public class DownloadErrorSignal extends DownloadSignal
15 | {
16 | /**
17 | * 失敗したURLです。
18 | */
19 | @NotNull
20 | String url;
21 |
22 | /**
23 | * 失敗した理由です。
24 | */
25 | @NotNull
26 | DownloadErrorCause cause;
27 | /**
28 | * 失敗した理由の詳細です。
29 | * 失敗した原因が、
30 | * {@link DownloadErrorCause#ILLEGAL_HTTP_RESPONSE} 出会った場合は、{@code 404 Not Found} のような{@link String}が、
31 | * {@link DownloadErrorCause#IO_EXCEPTION} 出会った場合は {@link Exception}が格納されます。
32 | */
33 | @Nullable
34 | Object value;
35 |
36 | public DownloadErrorSignal(@NotNull String downloadId, @NotNull String url, @NotNull DownloadErrorCause cause, @Nullable Object value)
37 | {
38 | super(downloadId);
39 | this.url = url;
40 | this.cause = cause;
41 | this.value = value;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/download/signals/DownloadProgressSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.download.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 |
7 | /**
8 | * ダウンロードの進捗を表すシグナルです。
9 | */
10 | @Value
11 | @EqualsAndHashCode(callSuper = true)
12 | public class DownloadProgressSignal extends DownloadSignal
13 | {
14 | /**
15 | * ダウンロードしようとしているファイルのURLです。
16 | */
17 | @NotNull
18 | String url;
19 |
20 | /**
21 | * ダウンロードしようとしているファイルのサイズです。
22 | */
23 | long totalSize;
24 | /**
25 | * ダウンロードしたファイルのサイズです。
26 | */
27 | long downloaded;
28 |
29 | /**
30 | * ダウンロードの進捗を表す値で、 {@code 0.0} から {@code 1.0} の間の値です。
31 | * {@code 0.5}は、ダウンロードが半分完了したことを表します。
32 | */
33 | double percentage;
34 |
35 | public DownloadProgressSignal(@NotNull String downloadId, @NotNull String url, long totalSize, long downloaded, double percentage)
36 | {
37 | super(downloadId);
38 | this.url = url;
39 | this.totalSize = totalSize;
40 | this.downloaded = downloaded;
41 | this.percentage = percentage;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/download/signals/DownloadSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.download.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | /**
9 | * ダウンロード時に発生するシグナルを表す、抽象クラスです。
10 | */
11 | @Data
12 | @EqualsAndHashCode(callSuper = false)
13 | public abstract class DownloadSignal extends Signal
14 | {
15 | /**
16 | * ダウンロードごとに発行される一意のIDです。
17 | */
18 | @NotNull
19 | private final String downloadId;
20 | }
21 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/download/signals/DownloadStartingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.download.signals;
2 |
3 | import lombok.Getter;
4 | import lombok.Setter;
5 | import org.jetbrains.annotations.NotNull;
6 |
7 | import java.nio.file.Path;
8 |
9 | /**
10 | * ダウンロードの開始中であることを示すシグナルです。
11 | */
12 | @Getter
13 | @Setter
14 | public class DownloadStartingSignal extends DownloadSignal
15 | {
16 | /**
17 | * ダウンロード先のパスです。
18 | */
19 | @NotNull
20 | private Path downloadPath;
21 | /**
22 | * ダウンロードを行うURLです。
23 | */
24 | @NotNull
25 | private String url;
26 |
27 | public DownloadStartingSignal(@NotNull String downloadId, @NotNull Path downloadPath, @NotNull String url)
28 | {
29 | super(downloadId);
30 | this.downloadPath = downloadPath;
31 | this.url = url;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/download/signals/DownloadSucceedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.download.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 |
7 | import java.nio.file.Path;
8 |
9 | /**
10 | * ダウンロードが完了したことを示すシグナルです。
11 | */
12 | @Value
13 | @EqualsAndHashCode(callSuper = true)
14 | public class DownloadSucceedSignal extends DownloadSignal
15 | {
16 | /**
17 | * ダウンロードしたファイルのパスです。
18 | */
19 | @NotNull
20 | Path downloadPath;
21 | /**
22 | * ダウンロードしたファイルのサイズです。
23 | */
24 | long totalSize;
25 |
26 | public DownloadSucceedSignal(@NotNull String downloadId, @NotNull Path downloadPath, long totalSize)
27 | {
28 | super(downloadId);
29 | this.downloadPath = downloadPath;
30 | this.totalSize = totalSize;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/clean/GarbageCleanArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.clean;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.task.interfaces.TaskArgument;
7 |
8 | import java.nio.file.Path;
9 | import java.util.List;
10 |
11 | /**
12 | * 不要なデータの削除を行うタスクの引数です。
13 | */
14 | @Value
15 | @EqualsAndHashCode(callSuper = false)
16 | public class GarbageCleanArgument implements TaskArgument
17 | {
18 | /**
19 | * 不要なデータとして削除するディレクトリ・ファイルのパスです。
20 | */
21 | @NotNull
22 | List paths;
23 | }
24 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/clean/GarbageCleanErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.clean;
2 |
3 | /**
4 | * 不要なデータの削除エラーを表す列挙型です。
5 | */
6 | public enum GarbageCleanErrorCause
7 | {
8 | /**
9 | * キャンセルされました。
10 | */
11 | CANCELLED,
12 | /**
13 | * 不要なデータが存在しません。
14 | */
15 | NO_GARBAGE,
16 |
17 | /**
18 | * すべての削除に失敗しました。
19 | */
20 | ALL_DELETE_FAILED,
21 | /**
22 | * ファイル・システムとの整合性が取れなく、スキップされました。
23 | */
24 | INVALID_INTEGRITY,
25 | }
26 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/clean/GarbageCleanResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.clean;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.task.AbstractTaskResult;
8 |
9 | import java.nio.file.Path;
10 | import java.util.Map;
11 |
12 | /**
13 | * 不要なデータの削除を行うタスクの結果です。
14 | */
15 | @Value
16 | @EqualsAndHashCode(callSuper = true)
17 | public class GarbageCleanResult extends AbstractTaskResult
18 | {
19 | /**
20 | * 削除の結果と不要なデータのパスです。
21 | */
22 | Map deletedGarbage;
23 |
24 | public GarbageCleanResult(boolean success, @NotNull GarbageCleanState state, @Nullable GarbageCleanErrorCause errorCause, Map deletedGarbage)
25 | {
26 | super(success, state, errorCause);
27 | this.deletedGarbage = deletedGarbage;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/clean/GarbageCleanState.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.clean;
2 |
3 | /**
4 | * 不要なデータの削除状態を表します。
5 | */
6 | public enum GarbageCleanState
7 | {
8 | /**
9 | * 不要なデータの削除が初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 | /**
13 | * 不要なデータをの削除中であることを示します。
14 | */
15 | DELETING_GARBAGE,
16 | }
17 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/clean/signal/GarbageDeleteSkippedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.clean.signal;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | import java.nio.file.Path;
9 |
10 | /**
11 | * 不要なデータの削除がスキップされたことを示すシグナルです。
12 | */
13 | @Value
14 | @EqualsAndHashCode(callSuper = false)
15 | public class GarbageDeleteSkippedSignal extends Signal
16 | {
17 | /**
18 | * スキップされた不要なデータのパスです。
19 | */
20 | @NotNull
21 | Path garbageData;
22 | }
23 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/clean/signal/GarbageDeletingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.clean.signal;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.Getter;
6 | import lombok.Setter;
7 | import org.jetbrains.annotations.NotNull;
8 | import org.kunlab.kpm.signal.Signal;
9 |
10 | import java.nio.file.Path;
11 |
12 | /**
13 | * 不要なデータの削除中であることを示すシグナルです。
14 | */
15 | @Data
16 | @EqualsAndHashCode(callSuper = false)
17 | public class GarbageDeletingSignal extends Signal
18 | {
19 | /**
20 | * 不要なデータのパスです。
21 | */
22 | @NotNull
23 | private final Path garbageData;
24 |
25 | /**
26 | * 削除前に呼ばれるシグナルです。
27 | */
28 | public static class Pre extends GarbageDeletingSignal
29 | {
30 | /**
31 | * 削除をスキップするかどうかです。
32 | */
33 | @Getter
34 | @Setter
35 | private boolean skip;
36 |
37 | public Pre(Path garbageData)
38 | {
39 | super(garbageData);
40 | this.skip = false;
41 | }
42 | }
43 |
44 | /**
45 | * 削除後に呼ばれるシグナルです。
46 | */
47 | public static class Post extends GarbageDeletingSignal
48 | {
49 | public Post(Path garbageData)
50 | {
51 | super(garbageData);
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/clean/signal/GarbageEnumeratedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.clean.signal;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.kunlab.kpm.signal.Signal;
6 |
7 | import java.nio.file.Path;
8 | import java.util.List;
9 |
10 | /**
11 | * 不要なデータが列挙されたことを示すシグナルです。
12 | */
13 | @Data
14 | @EqualsAndHashCode(callSuper = false)
15 | public class GarbageEnumeratedSignal extends Signal
16 | {
17 | /**
18 | * 不要なデータのパスのリストです。
19 | */
20 | private final List garbageDatas;
21 | /**
22 | * 削除をキャンセルするかどうかです。
23 | */
24 | private boolean cancel;
25 | }
26 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/clean/signal/InvalidIntegritySignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.clean.signal;
2 |
3 | import org.kunlab.kpm.signal.Signal;
4 |
5 | /**
6 | * 整合性がとれなく、システムが保護されたことを示すシグナルです。
7 | * 不要なデータの削除はスキップされます。
8 | */
9 | public class InvalidIntegritySignal extends Signal
10 | {
11 | }
12 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/search/GarbageSearchArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.search;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.Value;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.task.interfaces.TaskArgument;
8 |
9 | import java.nio.file.Path;
10 | import java.util.List;
11 |
12 | /**
13 | * 不要なデータの検索を行うタスクの引数です。
14 | */
15 | @Value
16 | @EqualsAndHashCode(callSuper = false)
17 | @AllArgsConstructor
18 | public class GarbageSearchArgument implements TaskArgument
19 | {
20 | /**
21 | * 検索から除外するデータのリストです。
22 | */
23 | @NotNull
24 | List excludes;
25 |
26 | /**
27 | * 検索するディレクトリのパスです。
28 | */
29 | @NotNull
30 | Path dataFolder;
31 |
32 | /**
33 | * サーバに存在するプラグインのリストです。
34 | */
35 | @NotNull
36 | List plugins;
37 | }
38 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/search/GarbageSearchErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.search;
2 |
3 | /**
4 | * 不要なデータの検索のエラーを表す列挙型です。
5 | */
6 | public enum GarbageSearchErrorCause
7 | {
8 | /**
9 | * I/Oエラーが発生しました。
10 | */
11 | IO_EXCEPTION_OCCURRED,
12 | }
13 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/search/GarbageSearchResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.search;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.task.AbstractTaskResult;
8 |
9 | import java.nio.file.Path;
10 | import java.util.List;
11 |
12 | /**
13 | * 不要なデータの検索を行うタスクの結果です。
14 | */
15 | @Value
16 | @EqualsAndHashCode(callSuper = true)
17 | public class GarbageSearchResult extends AbstractTaskResult
18 | {
19 | /**
20 | * 見つかった不要なデータのパスのリストです。
21 | */
22 | List garbageFiles;
23 |
24 | public GarbageSearchResult(boolean success, @NotNull GarbageSearchState state, @Nullable GarbageSearchErrorCause errorCause, List garbageFiles)
25 | {
26 | super(success, state, errorCause);
27 | this.garbageFiles = garbageFiles;
28 | }
29 |
30 | public GarbageSearchResult(@NotNull GarbageSearchState state, List garbageFiles)
31 | {
32 | this(true, state, null, garbageFiles);
33 | }
34 |
35 | public GarbageSearchResult(boolean success, @NotNull GarbageSearchState state, @Nullable GarbageSearchErrorCause errorCause)
36 | {
37 | this(success, state, errorCause, null);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/search/GarbageSearchState.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.search;
2 |
3 | /**
4 | * 不要なデータの検索の状態を表します。
5 | */
6 | public enum GarbageSearchState
7 | {
8 | /**
9 | * 不要なデータの検索が初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 | /**
13 | * 不要なデータの検索中であることを示します。
14 | */
15 | SEARCHING_GARBAGE,
16 | }
17 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/garbage/search/signals/GarbageSearchingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.garbage.search.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.kunlab.kpm.signal.Signal;
6 |
7 | import java.nio.file.Path;
8 |
9 | /**
10 | * 不要なデータの検索を開始したことを示すシグナルです。
11 | */
12 | @Data
13 | @EqualsAndHashCode(callSuper = false)
14 | public class GarbageSearchingSignal extends Signal
15 | {
16 | /**
17 | * 検索対象のディレクトリです。
18 | */
19 | private final Path dataFolder;
20 | }
21 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/install/PluginsInstallErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.install;
2 |
3 | /**
4 | * プラグインのインストール時に発生したエラーの原因を表します。
5 | */
6 | public enum PluginsInstallErrorCause
7 | {
8 | /**
9 | * プラグインの再配置に失敗しました。
10 | */
11 | RELOCATE_FAILED,
12 | /**
13 | * 無効なプラグインが指定されました。
14 | */
15 | INVALID_PLUGIN,
16 | /**
17 | * 無効なプラグイン情報ファイルが指定されました。
18 | */
19 | INVALID_PLUGIN_DESCRIPTION,
20 | /**
21 | * プラグインがこのサーバに互換性がありません。
22 | */
23 | INCOMPATIBLE_WITH_BUKKIT_VERSION,
24 | /**
25 | * プラグインがこのKPMに互換性がありません。
26 | */
27 | INCOMPATIBLE_WITH_KPM_VERSION,
28 |
29 | /**
30 | * {@link java.io.IOException} が発生しました。
31 | */
32 | IO_EXCEPTION_OCCURRED,
33 | /**
34 | * 不明な例外が発生しました。
35 | */
36 | EXCEPTION_OCCURRED
37 | }
38 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/install/PluginsInstallResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.install;
2 |
3 | import lombok.Getter;
4 | import org.bukkit.plugin.Plugin;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.task.AbstractTaskResult;
8 |
9 | import java.util.ArrayList;
10 | import java.util.List;
11 |
12 | /**
13 | * プラグインのインストール結果を表すクラスです。
14 | */
15 | public class PluginsInstallResult extends AbstractTaskResult
16 | {
17 | /**
18 | * インストールに失敗した場合、そのプラグインの名前が格納されます。
19 | */
20 | @Getter
21 | @Nullable
22 | private final String failedPluginName;
23 |
24 | /**
25 | * インストールに成功した場合、そのプラグインが格納されます。
26 | */
27 | @Getter
28 | @Nullable
29 | private final Plugin installedPlugin;
30 | /**
31 | * インストールされたプラグインの依存関係が格納されます。
32 | */
33 | @Getter
34 | @NotNull
35 | private final List collectedDependencies;
36 |
37 | public PluginsInstallResult(boolean success, @NotNull PluginsInstallState state, @Nullable PluginsInstallErrorCause errorCause)
38 | {
39 | this(success, state, errorCause, null, null, new ArrayList<>());
40 | }
41 |
42 | public PluginsInstallResult(boolean success, @NotNull PluginsInstallState state, @Nullable PluginsInstallErrorCause errorCause, @Nullable String failedPluginName, @Nullable Plugin installedPlugin, @NotNull List collectedDependencies)
43 | {
44 | super(success, state, errorCause);
45 | this.failedPluginName = failedPluginName;
46 | this.installedPlugin = installedPlugin;
47 | this.collectedDependencies = collectedDependencies;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/install/PluginsInstallState.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.install;
2 |
3 | /**
4 | * プラグインのインストールの状態を表します。
5 | */
6 | public enum PluginsInstallState
7 | {
8 | /**
9 | * プラグインのインストールが初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 |
13 | /**
14 | * プラグインの再配置中であることを示します。
15 | */
16 | PLUGIN_RELOCATING,
17 | /**
18 | * プラグインの読み込み中であることを示します。
19 | */
20 | PLUGIN_LOADING,
21 | /**
22 | * プラグインの{@link org.bukkit.plugin.Plugin#onLoad()} の実行中であることを示します。
23 | */
24 | ONLOAD_RUNNING,
25 | /**
26 | * プラグインの有効化中であることを示します。
27 | */
28 | PLUGIN_ENABLING,
29 | }
30 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/install/signals/PluginEnablingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.install.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.bukkit.plugin.Plugin;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * プラグインの有効化中であることを示すシグナルです。
11 | * {@link org.bukkit.plugin.java.JavaPlugin#onEnable()} の呼び出しの前後にスローされます。
12 | * このシグナルより先に {@link PluginOnLoadRunningSignal} が呼ばれます。
13 | */
14 | @Data
15 | @EqualsAndHashCode(callSuper = false)
16 | public class PluginEnablingSignal extends Signal
17 | {
18 | /**
19 | * 対象のプラグインです。
20 | */
21 | @NotNull
22 | private final Plugin plugin;
23 |
24 | /**
25 | * 有効化を行う前に送信されるシグナルです。
26 | */
27 | public static class Pre extends PluginEnablingSignal
28 | {
29 | public Pre(@NotNull Plugin plugin)
30 | {
31 | super(plugin);
32 | }
33 | }
34 |
35 | /**
36 | * 有効化中に失敗した場合に送信されるシグナルです。
37 | */
38 | public static class Failed extends PluginEnablingSignal
39 | {
40 | public Failed(@NotNull Plugin plugin)
41 | {
42 | super(plugin);
43 | }
44 | }
45 |
46 | /**
47 | * 有効化を行った後に送信されるシグナルです。
48 | */
49 | public static class Post extends PluginEnablingSignal
50 | {
51 | public Post(@NotNull Plugin plugin)
52 | {
53 | super(plugin);
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/install/signals/PluginIncompatibleWithKPMSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.install.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.bukkit.plugin.PluginDescriptionFile;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.kpminfo.KPMInformationFile;
8 | import org.kunlab.kpm.signal.Signal;
9 | import org.kunlab.kpm.versioning.Version;
10 |
11 | /**
12 | * プラグインがこのKPMと互換性がない場合に投げられるシグナルです。
13 | */
14 | @Data
15 | @EqualsAndHashCode(callSuper = false)
16 | public class PluginIncompatibleWithKPMSignal extends Signal
17 | {
18 | /**
19 | * プラグインの説明ファイルです。
20 | */
21 | @NotNull
22 | private final PluginDescriptionFile pluginDescription;
23 | /**
24 | * プラグインのKPM情報です。
25 | */
26 | @NotNull
27 | private final KPMInformationFile kpmInformation;
28 | /**
29 | * このKPMのバージョンです。
30 | */
31 | @NotNull
32 | private final Version kpmVersion;
33 |
34 | /**
35 | * 強制的にインストールするかどうかを示すフラグです。
36 | */
37 | private boolean forceInstall;
38 |
39 | public PluginIncompatibleWithKPMSignal(@NotNull PluginDescriptionFile pluginDescription, @NotNull KPMInformationFile kpmInformation, @NotNull Version kpmVersion)
40 | {
41 | this.pluginDescription = pluginDescription;
42 | this.kpmInformation = kpmInformation;
43 | this.kpmVersion = kpmVersion;
44 |
45 | this.forceInstall = false;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/install/signals/PluginInstallingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.install.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.bukkit.plugin.PluginDescriptionFile;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | import java.nio.file.Path;
10 |
11 | /**
12 | * プラグインのインストール中であることを示すシグナルです。
13 | */
14 | @Value
15 | @EqualsAndHashCode(callSuper = false)
16 | public class PluginInstallingSignal extends Signal
17 | {
18 | /**
19 | * 対象のプラグインのパスです。
20 | */
21 | @NotNull
22 | Path path;
23 | /**
24 | * 対象のプラグインの プラグイン情報ファイルです。
25 | */
26 | @NotNull
27 | PluginDescriptionFile pluginDescription;
28 | }
29 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/install/signals/PluginOnLoadRunningSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.install.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.bukkit.plugin.Plugin;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * プラグインの {@link Plugin#onLoad()} の実行の前後にスローされるシグナルです。
11 | */
12 | @Data
13 | @EqualsAndHashCode(callSuper = false)
14 | public class PluginOnLoadRunningSignal extends Signal
15 | {
16 | /**
17 | * 対象のプラグインです。
18 | */
19 | @NotNull
20 | private final Plugin plugin;
21 |
22 | /**
23 | * {@link Plugin#onLoad()} の実行を行う前に送信されるシグナルです。
24 | */
25 | public static class Pre extends PluginOnLoadRunningSignal
26 | {
27 | public Pre(@NotNull Plugin plugin)
28 | {
29 | super(plugin);
30 | }
31 | }
32 |
33 | /**
34 | * {@link Plugin#onLoad()} の実行を行った後に送信されるシグナルです。
35 | */
36 | public static class Post extends PluginOnLoadRunningSignal
37 | {
38 | public Post(@NotNull Plugin plugin)
39 | {
40 | super(plugin);
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/install/signals/PluginRelocatingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.install.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | import java.nio.file.Path;
9 |
10 | /**
11 | * プラグインを、ダウンロードの仮ディレクトリからプラグインディレクトリに移動する際に送信されるシグナルです。
12 | */
13 | @Data
14 | @EqualsAndHashCode(callSuper = false)
15 | public class PluginRelocatingSignal extends Signal
16 | {
17 | /**
18 | * プラグインのパスです。
19 | */
20 | @NotNull
21 | private final Path source;
22 | /**
23 | * 移動先のパスです。
24 | * デフォルトは {@code plugins/} です。
25 | */
26 | @NotNull
27 | private Path target;
28 | }
29 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/lookup/LookupArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.lookup;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.task.interfaces.TaskArgument;
7 |
8 | /**
9 | * プラグインの検索を行うタスクの引数です。
10 | */
11 | @Value
12 | @EqualsAndHashCode(callSuper = false)
13 | public class LookupArgument implements TaskArgument
14 | {
15 | /**
16 | * 検索するクエリです。
17 | */
18 | @NotNull
19 | String[] queries;
20 | }
21 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/lookup/LookupErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.lookup;
2 |
3 | /**
4 | * プラグインの検索のエラーを表す列挙型です。
5 | */
6 | public enum LookupErrorCause
7 | {
8 | /**
9 | * 不正なクエリが指定されたことを示します。
10 | */
11 | INVALID_QUERY
12 | }
13 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/lookup/LookupResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.lookup;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.bukkit.plugin.Plugin;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.jetbrains.annotations.Nullable;
8 | import org.kunlab.kpm.task.AbstractTaskResult;
9 |
10 | import java.util.Map;
11 |
12 | /**
13 | * プラグインの検索を行うタスクの結果です。
14 | */
15 | @Value
16 | @EqualsAndHashCode(callSuper = true)
17 | public class LookupResult extends AbstractTaskResult
18 | {
19 | /**
20 | * 検索に成功した場合、そのプラグインらが格納されます。
21 | * {@link #isSuccess()}がfalseの場合や、クエリが間違っている場合などにこの値はnullになります。
22 | */
23 | @Nullable
24 | Map<@NotNull String, @Nullable Plugin> plugins;
25 |
26 | public LookupResult(boolean success, @NotNull LookupState state, @NotNull Map plugins)
27 | {
28 | super(success, state, null);
29 | this.plugins = plugins;
30 | }
31 |
32 | public LookupResult(boolean success, @NotNull LookupState state, @Nullable LookupErrorCause errorCause)
33 | {
34 | super(success, state, errorCause);
35 | this.plugins = null;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/lookup/LookupState.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.lookup;
2 |
3 | /**
4 | * プラグインの検索の状態を表します。
5 | */
6 | public enum LookupState
7 | {
8 | /**
9 | * プラグインの検索が初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 | /**
13 | * クエリの解析中であることを示します。
14 | */
15 | QUERY_PARSING,
16 | /**
17 | * プラグインの検索中であることを示します。
18 | */
19 | PLUGIN_LOOKUP
20 | }
21 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/resolve/PluginResolveArgument.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.resolve;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.task.interfaces.TaskArgument;
7 |
8 | /**
9 | * プラグインの解決を行うタスクの引数です。
10 | */
11 | @Data
12 | @EqualsAndHashCode(callSuper = false)
13 | public class PluginResolveArgument implements TaskArgument
14 | {
15 | /**
16 | * 解決する際に使用されるクエリです。
17 | */
18 | @NotNull
19 | String query;
20 |
21 | public PluginResolveArgument(@NotNull String query)
22 | {
23 | this.query = query;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/resolve/PluginResolveErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.resolve;
2 |
3 | import org.kunlab.kpm.resolver.interfaces.result.ErrorResult;
4 |
5 | /**
6 | * プラグインの解決に失敗した理由を表します。
7 | */
8 | public enum PluginResolveErrorCause
9 | {
10 | /**
11 | * 無効なクエリが指定されたことを示します。
12 | */
13 | INVALID_QUERY,
14 | /**
15 | * 予期しない内部エラーが発生したことを示します。
16 | */
17 | ILLEGAL_INTERNAL_STATE,
18 | /**
19 | * {@link ErrorResult} が サーバまたはプラグインリゾルバから返されたことを示します。
20 | */
21 | GOT_ERROR_RESULT,
22 | /**
23 | * ユーザがキャンセルしたことを示します。
24 | */
25 | CANCELLED,
26 | }
27 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/resolve/PluginResolveResult.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.resolve;
2 |
3 | import lombok.Getter;
4 | import org.jetbrains.annotations.NotNull;
5 | import org.jetbrains.annotations.Nullable;
6 | import org.kunlab.kpm.resolver.interfaces.result.SuccessResult;
7 | import org.kunlab.kpm.task.AbstractTaskResult;
8 |
9 | /**
10 | * プラグインの解決を行うタスクの結果です。
11 | */
12 | public class PluginResolveResult extends AbstractTaskResult
13 | {
14 | /**
15 | * 解決されたプラグインの解決結果です。
16 | */
17 | @Getter
18 | @Nullable
19 | private final SuccessResult resolveResult;
20 |
21 | public PluginResolveResult(boolean success, @NotNull PluginResolveState taskState,
22 | @NotNull PluginResolveErrorCause errorCause, @Nullable SuccessResult resolveResult)
23 | {
24 | super(success, taskState, errorCause);
25 | this.resolveResult = resolveResult;
26 | }
27 |
28 | public PluginResolveResult(boolean success, @NotNull PluginResolveState taskState, @NotNull SuccessResult resolveResult)
29 | {
30 | super(success, taskState, null);
31 | this.resolveResult = resolveResult;
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/resolve/PluginResolveState.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.resolve;
2 |
3 | /**
4 | * プラグインの解決の状態を表します。
5 | */
6 | public enum PluginResolveState
7 | {
8 | /**
9 | * プラグインの解決が初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 |
13 | /**
14 | * プラグインの解決が開始されたことを示します。
15 | */
16 | PRE_RESOLVING,
17 | /**
18 | * プラグインの解決が完了したことを示します。
19 | */
20 | PRE_RESOLVE_FINISHED,
21 |
22 | /**
23 | * 複数結果があった場合、どれを選択するかの選択中であることを示します。
24 | */
25 | MULTI_RESOLVING,
26 |
27 | /**
28 | * プラグインの解決が完了したことを示します。
29 | */
30 | RESOLVE_FINISHED
31 | }
32 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/resolve/signals/MultiplePluginResolvedSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.resolve.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.jetbrains.annotations.Nullable;
7 | import org.kunlab.kpm.resolver.interfaces.result.MultiResult;
8 | import org.kunlab.kpm.resolver.interfaces.result.ResolveResult;
9 | import org.kunlab.kpm.resolver.interfaces.result.SuccessResult;
10 | import org.kunlab.kpm.signal.Signal;
11 |
12 | /**
13 | * 複数のプラグインが解決されたことを示すシグナルです。
14 | */
15 | @Data
16 | @EqualsAndHashCode(callSuper = false)
17 | public class MultiplePluginResolvedSignal extends Signal
18 | {
19 | /**
20 | * 解決する際に使用されたクエリです。
21 | */
22 | @NotNull
23 | private final String query;
24 |
25 | /**
26 | * 解決された複数のプラグインの結果です。
27 | */
28 | @NotNull
29 | private final MultiResult results;
30 |
31 | /**
32 | * 明示的に指定するプラグインの解決結果です。
33 | * これに{@link SuccessResult}を格納すると、使用するプラグインを一意に特定できます.
34 | * {@code null} の場合は、自動的に選択されます。
35 | */
36 | @Nullable
37 | private ResolveResult specifiedResult;
38 |
39 | /**
40 | * インストールをキャンセルするかどうかを示すフラグです。
41 | */
42 | private boolean cancel;
43 | }
44 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/resolve/signals/PluginResolveErrorSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.resolve.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.NonNull;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.resolver.interfaces.result.ErrorResult;
8 | import org.kunlab.kpm.signal.Signal;
9 |
10 | /**
11 | * プラグインの解決に失敗したことを示すシグナルです。
12 | */
13 | @Data
14 | @EqualsAndHashCode(callSuper = false)
15 | public class PluginResolveErrorSignal extends Signal
16 | {
17 | /**
18 | * 失敗したプラグインの解決結果です。
19 | */
20 | @NonNull
21 | private final ErrorResult error;
22 | /**
23 | * 解決しようとしたクエリです。
24 | */
25 | @NotNull
26 | private final String query;
27 | }
28 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/resolve/signals/PluginResolvedSuccessfulSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.resolve.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.jetbrains.annotations.NotNull;
6 | import org.kunlab.kpm.resolver.interfaces.result.SuccessResult;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * プラグインが正常に解決されたことを示すシグナルです。
11 | */
12 | @Data
13 | @EqualsAndHashCode(callSuper = false)
14 | public class PluginResolvedSuccessfulSignal extends Signal
15 | {
16 | /**
17 | * 解決する際に使用されたクエリです。
18 | * 値を変更すると、解決されたプラグインが変更されます。
19 | */
20 | @NotNull
21 | private SuccessResult resolvedPlugin;
22 | }
23 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/resolve/signals/PluginResolvingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.resolve.signals;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import org.kunlab.kpm.resolver.interfaces.PluginResolver;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * プラグインの解決中であることを示すシグナルです。
11 | */
12 | @Data
13 | @AllArgsConstructor
14 | @EqualsAndHashCode(callSuper = false)
15 | public class PluginResolvingSignal extends Signal
16 | {
17 | /**
18 | * 解決に使用されるプラグインリゾルバです。
19 | */
20 | private final PluginResolver resolver;
21 | /**
22 | * 解決する際に使用されるクエリです。
23 | */
24 | private String query;
25 | }
26 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/uninstall/UninstallErrorCause.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.uninstall;
2 |
3 | /**
4 | * アンインストールに失敗した理由を表します。
5 | */
6 | public enum UninstallErrorCause
7 | {
8 | /**
9 | * いくつかのプラグインのアンインストールに失敗しました。
10 | */
11 | SOME_UNINSTALL_FAILED,
12 |
13 | /**
14 | * 内部:1つのプラグインのアンインストールに成功しました。
15 | */
16 | INTERNAL_UNINSTALL_OK,
17 | /**
18 | * 內部:1つのプラグインの無効化に成功し、アンインストール処理を完了しました。
19 | */
20 | INTERNAL_DISABLE_AND_UNINSTALL_OK,
21 |
22 | /**
23 | * 内部:1つのプラグインの無効化に失敗しました。
24 | */
25 | INTERNAL_PLUGIN_DISABLE_FAILED,
26 | /**
27 | * 内部:1つのプラグインのクラスのアンロードに失敗しました。
28 | */
29 | INTERNAL_CLASS_UNLOAD_FAILED,
30 | }
31 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/uninstall/UninstallState.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.uninstall;
2 |
3 | /**
4 | * アンインストールの状態を表します。
5 | */
6 | public enum UninstallState
7 | {
8 | /**
9 | * アンインストールが初期化されたことを示します。
10 | */
11 | INITIALIZED,
12 | /**
13 | * アンインストールが開始されたことを示します。
14 | */
15 | UNINSTALLING,
16 |
17 | /**
18 | * レシピの登録解除中であることを示します。
19 | */
20 | RECIPES_UNREGISTERING,
21 | /**
22 | * コマンドのアンパッチ中であることを示します。
23 | */
24 | COMMANDS_UNPATCHING,
25 | /**
26 | * プラグインの無効化中であることを示します。
27 | */
28 | PLUGIN_DISABLING,
29 |
30 | /**
31 | * Bukkit からプラグインをアンロード中であることを示します。
32 | */
33 | REMOVING_FROM_BUKKIT,
34 | /**
35 | * クラスのアンロード中であることを示します。
36 | */
37 | CLASSES_UNLOADING
38 | }
39 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/uninstall/signals/PluginDisablingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.uninstall.signals;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import org.bukkit.plugin.Plugin;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * プラグインの無効化の前後にスローされるシグナルです。
11 | */
12 | @Data
13 | @EqualsAndHashCode(callSuper = false)
14 | public class PluginDisablingSignal extends Signal
15 | {
16 | /**
17 | * 無効化されるプラグインです。
18 | */
19 | @NotNull
20 | private final Plugin plugin;
21 |
22 | /**
23 | * 無効化の前にスローされるシグナルです。
24 | */
25 | public static class Pre extends PluginDisablingSignal
26 | {
27 | public Pre(@NotNull Plugin plugin)
28 | {
29 | super(plugin);
30 | }
31 | }
32 |
33 | /**
34 | * 無効化の後にスローされるシグナルです。
35 | */
36 | public static class Post extends PluginDisablingSignal
37 | {
38 | public Post(@NotNull Plugin plugin)
39 | {
40 | super(plugin);
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/uninstall/signals/PluginUninstallErrorSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.uninstall.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.bukkit.plugin.PluginDescriptionFile;
6 | import org.kunlab.kpm.signal.Signal;
7 | import org.kunlab.kpm.task.tasks.uninstall.UninstallErrorCause;
8 |
9 | /**
10 | * プラグインのアンインストール中にエラーが発生したことを通知するシグナルです。
11 | */
12 | @Value
13 | @EqualsAndHashCode(callSuper = false)
14 | public class PluginUninstallErrorSignal extends Signal
15 | {
16 | /**
17 | * エラーの原因です。
18 | */
19 | UninstallErrorCause cause;
20 | /**
21 | * エラーが発生したプラグインのプラグイン情報ファイルです。
22 | */
23 | PluginDescriptionFile description;
24 | }
25 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/uninstall/signals/PluginUninstallingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.uninstall.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.bukkit.plugin.Plugin;
6 | import org.kunlab.kpm.signal.Signal;
7 |
8 | /**
9 | * プラグインのアンインストールのシグナルです。
10 | */
11 | @Value
12 | @EqualsAndHashCode(callSuper = false)
13 | public class PluginUninstallingSignal extends Signal
14 | {
15 | /**
16 | * アンインストールされるプラグインです。
17 | */
18 | Plugin plugin;
19 | }
20 |
21 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/uninstall/signals/PluginUnloadingSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.uninstall.signals;
2 |
3 | import lombok.EqualsAndHashCode;
4 | import lombok.Value;
5 | import org.bukkit.plugin.Plugin;
6 | import org.jetbrains.annotations.NotNull;
7 | import org.kunlab.kpm.signal.Signal;
8 |
9 | /**
10 | * プラグインのアンロードの前後にスローされるシグナルです。
11 | */
12 | public class PluginUnloadingSignal extends Signal
13 | {
14 | /**
15 | * アンロードの前にスローされるシグナルです。
16 | */
17 | @Value
18 | @EqualsAndHashCode(callSuper = false)
19 | public static class Pre extends PluginUnloadingSignal
20 | {
21 | /**
22 | * アンロードされるプラグインです。
23 | */
24 | @NotNull
25 | Plugin plugin;
26 | }
27 |
28 | /**
29 | * アンロードの後にスローされるシグナルです。
30 | */
31 | @Value
32 | @EqualsAndHashCode(callSuper = false)
33 | public static class Post extends PluginUnloadingSignal
34 | {
35 | /**
36 | * アンロードされるプラグインの名前です。
37 | * 注意:アンロード後なので、{@link Plugin}のインスタンスは取得できません(VMから削除されています)。
38 | */
39 | @NotNull
40 | String pluginName;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/KPMTasks/src/main/java/org/kunlab/kpm/task/tasks/uninstall/signals/StartingGCSignal.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.task.tasks.uninstall.signals;
2 |
3 | import org.kunlab.kpm.signal.Signal;
4 |
5 | /**
6 | * VMのGCを実行することを通知するシグナルです。
7 | */
8 | public class StartingGCSignal extends Signal
9 | {
10 | }
11 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021-2023 TeamKun., Peyang
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/images/clean.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TeamKun/TeamKUNPluginManager/7763e73051767773644051fadac9384586742bb1/images/clean.png
--------------------------------------------------------------------------------
/images/pl-info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TeamKun/TeamKUNPluginManager/7763e73051767773644051fadac9384586742bb1/images/pl-info.png
--------------------------------------------------------------------------------
/images/pl-install.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TeamKun/TeamKUNPluginManager/7763e73051767773644051fadac9384586742bb1/images/pl-install.png
--------------------------------------------------------------------------------
/images/pl-upgrade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TeamKun/TeamKUNPluginManager/7763e73051767773644051fadac9384586742bb1/images/pl-upgrade.png
--------------------------------------------------------------------------------
/nms_v1_16/src/main/java/org/kunlab/kpm/nms/v1_16/utils/ServerConditionCheckerImpl.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.nms.v1_16.utils;
2 |
3 | import org.bukkit.Bukkit;
4 | import org.bukkit.craftbukkit.v1_16_R3.CraftServer;
5 | import org.kunlab.kpm.utils.interfaces.ServerConditionChecker;
6 |
7 | public class ServerConditionCheckerImpl implements ServerConditionChecker
8 | {
9 | private final CraftServer craftServer;
10 | private final int currentSessionReloadCount;
11 |
12 | public ServerConditionCheckerImpl()
13 | {
14 | this.craftServer = (CraftServer) Bukkit.getServer();
15 | this.currentSessionReloadCount = this.craftServer.reloadCount;
16 | }
17 |
18 | @Override
19 | public boolean isStopping()
20 | {
21 | return this.craftServer.getServer().isRunning();
22 | }
23 |
24 | @Override
25 | public boolean isReloading()
26 | {
27 | return this.craftServer.reloadCount != this.currentSessionReloadCount;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/nms_v1_19/src/main/java/org/kunlab/kpm/nms/v1_19/utils/ServerConditionCheckerImpl.java:
--------------------------------------------------------------------------------
1 | package org.kunlab.kpm.nms.v1_19.utils;
2 |
3 | import org.bukkit.Bukkit;
4 | import org.bukkit.craftbukkit.v1_19_R1.CraftServer;
5 | import org.kunlab.kpm.utils.interfaces.ServerConditionChecker;
6 |
7 | public class ServerConditionCheckerImpl implements ServerConditionChecker
8 | {
9 | private final CraftServer craftServer;
10 | private final int currentSessionReloadCount;
11 |
12 | public ServerConditionCheckerImpl()
13 | {
14 | this.craftServer = (CraftServer) Bukkit.getServer();
15 | this.currentSessionReloadCount = this.craftServer.reloadCount;
16 | }
17 |
18 | @Override
19 | public boolean isStopping()
20 | {
21 | return !this.craftServer.getServer().u();
22 | }
23 |
24 | @Override
25 | public boolean isReloading()
26 | {
27 | return this.craftServer.reloadCount != this.currentSessionReloadCount;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------