添加直链下载模式...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092 2015-12-12 18:15:52 +08:00
parent 8a1e745325
commit 63dda660c8
4 changed files with 70 additions and 8 deletions

View File

@ -139,7 +139,7 @@ public class YumAPI {
public static boolean installfromyum(final CommandSender sender, final String pluginname, final String version) { public static boolean installfromyum(final CommandSender sender, final String pluginname, final String version) {
final PluginInfo pi = repo.getPlugin(pluginname); final PluginInfo pi = repo.getPlugin(pluginname);
if (pi != null) { if (pi != null) {
return install(sender, pi.name, pi.getMavenUrl(sender, version)); return install(sender, pi.name, pi.getUrl(sender, version));
} }
return false; return false;
} }
@ -286,7 +286,7 @@ public class YumAPI {
public static boolean updatefromyum(final CommandSender sender, final Plugin plugin, final String version) { public static boolean updatefromyum(final CommandSender sender, final Plugin plugin, final String version) {
final PluginInfo pi = repo.getPlugin(plugin.getName()); final PluginInfo pi = repo.getPlugin(plugin.getName());
if (pi != null) { if (pi != null) {
if (download.run(sender, pi.getMavenUrl(sender, version), new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName()))) { if (download.run(sender, pi.getUrl(sender, version), new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName()))) {
sender.sendMessage("§6更新: §e已下载 " + plugin.getName() + " 插件到服务器更新文件夹"); sender.sendMessage("§6更新: §e已下载 " + plugin.getName() + " 插件到服务器更新文件夹");
sender.sendMessage("§6更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!"); sender.sendMessage("§6更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
return true; return true;

View File

@ -8,6 +8,7 @@ import org.bukkit.command.CommandSender;
import cn.citycraft.PluginHelper.utils.IOUtil; import cn.citycraft.PluginHelper.utils.IOUtil;
import cn.citycraft.Yum.manager.RepoSerialization.Plugin; import cn.citycraft.Yum.manager.RepoSerialization.Plugin;
import cn.citycraft.Yum.manager.RepoSerialization.TagInfo; import cn.citycraft.Yum.manager.RepoSerialization.TagInfo;
import cn.citycraft.Yum.manager.RepoSerialization.URLType;
public class PluginInfo { public class PluginInfo {
public static final String NMSVersion = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]; public static final String NMSVersion = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
@ -16,14 +17,53 @@ public class PluginInfo {
public String name; public String name;
public Plugin plugin; public Plugin plugin;
public String pom; public String pom;
public URLType type;
public String repo; public String repo;
public List<TagInfo> tags; public List<TagInfo> tags;
public String url; public String url;
/**
* 获得下载直链
*
* @param sender
* 命令发送者
* @param version
* 版本
* @return 下载直链
*/
public String getDirectUrl() {
return url;
}
/**
* 获得下载直链
*
* @param sender
* 命令发送者
* @param version
* 版本
* @return 下载直链
*/
public String getDirectUrl(final String version) {
return url.replace("[version]", version);
}
/**
* 获得文件名称
*
* @return 文件名称
*/
public String getFileName() { public String getFileName() {
return getFileName(plugin.version); return getFileName(plugin.version);
} }
/**
* 获得文件名称
*
* @param version
* 插件版本
* @return 文件名称
*/
public String getFileName(final String version) { public String getFileName(final String version) {
return String.format("%1$s-%2$s.jar", plugin.artifactId, version); return String.format("%1$s-%2$s.jar", plugin.artifactId, version);
} }
@ -37,7 +77,14 @@ public class PluginInfo {
* - 需要更新的版本 * - 需要更新的版本
* @return 更新地址 * @return 更新地址
*/ */
public String getMavenUrl(final CommandSender sender, final String version) { public String getMavenUrl(final String ver) {
return String.format(url + (url.endsWith("/") ? "" : "/") + "%1$s/%2$s/%3$s/%2$s-%3$s.jar",
plugin.groupId.replace(".", "/"),
plugin.artifactId,
(ver == null || ver.isEmpty()) ? plugin.version : ver);
}
public String getUrl(final CommandSender sender, final String version) {
String ver = version; String ver = version;
if (ver == null) { if (ver == null) {
if (tags != null) { if (tags != null) {
@ -61,9 +108,13 @@ public class PluginInfo {
ver = plugin.version; ver = plugin.version;
sender.sendMessage("§6版本: §a使用缓存的版本 §e" + ver + " §a..."); sender.sendMessage("§6版本: §a使用缓存的版本 §e" + ver + " §a...");
} }
return String.format(url + (url.endsWith("/") ? "" : "/") + "%1$s/%2$s/%3$s/%2$s-%3$s.jar", switch (type) {
plugin.groupId.replace(".", "/"), case DirectUrl:
plugin.artifactId, return getDirectUrl(ver);
(ver == null || ver.isEmpty()) ? plugin.version : ver); case Maven:
return getMavenUrl(ver);
default:
return null;
}
} }
} }

View File

@ -18,6 +18,7 @@ public class RepoSerialization {
public List<Plugin> plugins = new ArrayList<>(); public List<Plugin> plugins = new ArrayList<>();
public String pom; public String pom;
public String url; public String url;
public String type;
} }
public class Plugin { public class Plugin {
@ -26,9 +27,11 @@ public class RepoSerialization {
public String description; public String description;
public String groupId; public String groupId;
public String name; public String name;
public String url;
public String pom; public String pom;
public List<TagInfo> tags; public List<TagInfo> tags;
public String version; public String version;
public String type;
} }
public class Repositories { public class Repositories {
@ -45,5 +48,11 @@ public class RepoSerialization {
public class TagInfo { public class TagInfo {
public String tag; public String tag;
public String version; public String version;
public String url;
}
public enum URLType {
Maven,
DirectUrl;
} }
} }

View File

@ -23,6 +23,7 @@ import cn.citycraft.Yum.manager.RepoSerialization.PackageInfo;
import cn.citycraft.Yum.manager.RepoSerialization.Plugin; import cn.citycraft.Yum.manager.RepoSerialization.Plugin;
import cn.citycraft.Yum.manager.RepoSerialization.Repositories; import cn.citycraft.Yum.manager.RepoSerialization.Repositories;
import cn.citycraft.Yum.manager.RepoSerialization.Repository; import cn.citycraft.Yum.manager.RepoSerialization.Repository;
import cn.citycraft.Yum.manager.RepoSerialization.URLType;
/** /**
* 仓库管理类 * 仓库管理类
@ -178,8 +179,9 @@ public class RepositoryManager {
pi.name = StringUtil.getNotNull(plugin.name, plugin.artifactId); pi.name = StringUtil.getNotNull(plugin.name, plugin.artifactId);
pi.branch = StringUtil.getNotNull(plugin.branch, "master"); pi.branch = StringUtil.getNotNull(plugin.branch, "master");
pi.pom = StringUtil.getNotNull(plugin.pom, pkg.pom); pi.pom = StringUtil.getNotNull(plugin.pom, pkg.pom);
pi.url = StringUtil.getNotNull(plugin.url, pkg.url);
pi.type = URLType.valueOf(StringUtil.getNotNull(StringUtil.getNotNull(plugin.type, pkg.type), URLType.Maven.name()));
pi.plugin = plugin; pi.plugin = plugin;
pi.url = pkg.url;
pi.repo = pkg.name; pi.repo = pkg.name;
repocache.getPlugins().put(plugin.groupId + "." + plugin.artifactId, pi); repocache.getPlugins().put(plugin.groupId + "." + plugin.artifactId, pi);
} }