fix upgrade command ...

Signed-off-by: j502647092 <jtb1@163.com>
This commit is contained in:
j502647092 2015-09-06 23:55:37 +08:00
parent 2ecb988e50
commit 5570d82bed
4 changed files with 44 additions and 46 deletions

View File

@ -71,6 +71,7 @@ public class CommandHandler implements CommandExecutor, TabCompleter {
registerCommand(new CommandReload(yum));
registerCommand(new CommandLoad(yum));
registerCommand(new CommandUnload(yum));
registerCommand(new CommandUpgrade(yum));
RegisterCommandList = getRegisterCommands();
}
@ -82,9 +83,8 @@ public class CommandHandler implements CommandExecutor, TabCompleter {
*/
public List<String> getRegisterCommands() {
List<String> cmds = new ArrayList<String>();
for (BaseCommand command : commandlist) {
for (BaseCommand command : commandlist)
cmds.addAll(command.getCommandList());
}
return cmds;
}
@ -94,7 +94,7 @@ public class CommandHandler implements CommandExecutor, TabCompleter {
return true;
String subcmd = args[0];
String[] subargs = moveStrings(args, 1);
for (BaseCommand command : commandlist) {
for (BaseCommand command : commandlist)
if (command.isValidTrigger(subcmd)) {
if (!command.hasPermission(sender)) {
sender.sendMessage("你没有此命令的权限!");
@ -104,18 +104,16 @@ public class CommandHandler implements CommandExecutor, TabCompleter {
sender.sendMessage("控制台无法使用此命令!");
return true;
}
if (subargs.length >= command.getMinimumArguments()) {
if (subargs.length >= command.getMinimumArguments())
try {
command.execute(sender, subcmd, subargs);
return true;
} catch (CommandException e) {
sender.sendMessage(e.getMessage());
}
} else {
else
sender.sendMessage("错误的参数 /yum " + command.getName() + command.getPossibleArguments());
}
}
}
return false;
}
@ -134,12 +132,10 @@ public class CommandHandler implements CommandExecutor, TabCompleter {
if (args[0].equalsIgnoreCase("install"))
plugins = YumManager.repo.getAllPluginName();
else if (args[0].equalsIgnoreCase("repo"))
plugins = Arrays.asList(new String[] {
"add",
plugins = Arrays.asList(new String[] { "add",
"list",
"clean",
"update"
});
"update" });
else
plugins = YumManager.plugman.getPluginNames(false);
StringUtil.copyPartialMatches(partialPlugin, plugins, completions);

View File

@ -29,13 +29,13 @@ public class CommandUpgrade extends BaseCommand {
public void execute(final CommandSender sender, String label, final String[] args) throws CommandException {
final String pluginname = args[0];
final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
sender.sendMessage("§a开始更新插件: " + pluginname);
sender.sendMessage("§a开始升级插件: " + pluginname);
if (plugin != null)
Bukkit.getScheduler().runTaskAsynchronously(main, () -> {
if (args.length < 2)
YumManager.upgrade(sender, plugin);
if (args.length == 1)
YumManager.plugman.upgrade(sender, plugin);
else
YumManager.upgrade(sender, plugin, args[1]);
YumManager.plugman.upgrade(sender);
});
else
sender.sendMessage("§c插件未安装或已卸载 需要安装请使用yum install " + pluginname + "!");

View File

@ -1,6 +1,7 @@
package cn.citycraft.Yum.manager;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.net.URL;
import java.net.URLClassLoader;
@ -485,8 +486,9 @@ public class PluginsManager {
*
* @return 是否成功
*/
public boolean updateall(CommandSender sender) {
return updateall(sender, Bukkit.getServer().getUpdateFolderFile());
public boolean upgrade(CommandSender sender) {
sender.sendMessage("§6升级: §a开始升级 服务器更新 目录下的所有插件!");
return upgrade(sender, null, null);
}
/**
@ -498,27 +500,36 @@ public class PluginsManager {
* - 更新目录
* @return 是否成功
*/
public boolean updateall(CommandSender sender, File directory) {
public boolean upgrade(CommandSender sender, File directory, Plugin plugin) {
boolean result = false;
PluginLoader loader = main.getPluginLoader();
File updateDirectory;
if (!directory.isDirectory())
if (directory == null || !directory.isDirectory())
updateDirectory = Bukkit.getServer().getUpdateFolderFile();
else
updateDirectory = directory;
try {
sender.sendMessage("§6升级: §b从 " + updateDirectory.getCanonicalPath() + " 文件夹检索插件插件!");
} catch (SecurityException | IOException e1) {
sender.sendMessage("§4异常: §c文件夹 " + updateDirectory.getName() + " 权限不足或IO错误!");
}
for (File file : updateDirectory.listFiles()) {
PluginDescriptionFile description = null;
try {
description = loader.getPluginDescription(file);
String name = description.getName();
sender.sendMessage("§6升级: 开始升级 " + name + " 插件!");
if (plugin != null && name != plugin.getName())
continue;
result = true;
sender.sendMessage("§6升级: §a开始升级 " + name + " 插件!");
reload(sender, name);
} catch (InvalidDescriptionException e) {
sender.sendMessage("§4异常: §c" + e.getMessage());
sender.sendMessage("§c文件: " + file.getName() + " 的plugin.yml文件存在错误!");
sender.sendMessage("§4文件: §c" + file.getName() + " 的plugin.yml文件存在错误!");
continue;
}
}
return false;
return result;
}
/**
@ -526,7 +537,18 @@ public class PluginsManager {
*
* @return 是否成功
*/
public boolean updateall(File directory) {
return updateall(Bukkit.getConsoleSender(), directory);
public boolean upgrade(CommandSender sender, Plugin plugin) {
sender.sendMessage("§6升级: §a开始升级 " + plugin.getName() + " 插件!");
return upgrade(sender, null, plugin);
}
/**
* 重载update文件夹的插件
*
* @return 是否成功
*/
public boolean upgrade(File directory) {
Bukkit.getConsoleSender().sendMessage("§6升级: §a开始升级 " + directory.getName() + " 目录下的所有插件!");
return upgrade(Bukkit.getConsoleSender(), directory, null);
}
}

View File

@ -55,24 +55,4 @@ public class YumManager {
sender.sendMessage("§6更新: §c仓库缓存中未找到插件 " + plugin.getName());
return false;
}
public static boolean upgrade(CommandSender sender) {
return plugman.updateall(sender);
}
public static boolean upgrade(CommandSender sender, Plugin plugin) {
return update(sender, plugin, null);
}
public static boolean upgrade(CommandSender sender, Plugin plugin, String version) {
PluginInfo pi = repo.getPlugin(plugin.getName());
if (pi != null) {
if (download.run(sender, pi.getMavenUrl(version), plugman.getPluginFile(plugin)))
return plugman.reload(sender, plugin);
return false;
} else {
sender.sendMessage("§6更新: §c仓库缓存中未找到插件 " + plugin.getName());
return false;
}
}
}