使用国内源数据 添加仓库查看命令...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092 2015-11-24 20:55:17 +08:00
parent 84295a46de
commit 281e09b496
4 changed files with 59 additions and 17 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>cn.citycraft</groupId>
<artifactId>Yum</artifactId>
<version>1.8.2</version>
<version>1.8.3</version>
<name>Yum</name>
<description>Minecraft 服务器插件管理系统</description>
<build>
@ -55,7 +55,7 @@
</build>
<properties>
<jenkins.url>http://ci.citycraft.cn:8080</jenkins.url>
<update.description>&amp;c修复自动获取版本错误...</update.description>
<update.description>&amp;b默认使用国内源数据 添加仓库查看命令...</update.description>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>

View File

@ -32,7 +32,7 @@ public class CommandRepo extends BaseCommand {
this.main = main;
setMinimumArguments(1);
setDescription("插件源命令");
setPossibleArguments("<add|del|clean|list> <仓库名称>");
setPossibleArguments("<add|del|all|clean|list> <仓库名称>");
}
@Override
@ -45,7 +45,8 @@ public class CommandRepo extends BaseCommand {
case "add":
if (args.length == 2) {
if (YumManager.repo.addRepositories(sender, args[1])) {
sender.sendMessage("§6仓库: §a§a源地址 " + args[1] + " 的插件信息已缓存!");
final String reponame = YumManager.repo.getRepoCache(args[1]).name;
sender.sendMessage("§6仓库: §a源仓库 §e" + reponame + " §a的插件信息已缓存!");
} else {
sender.sendMessage("§6仓库: §c源地址未找到仓库信息或当前地址已缓存!");
}
@ -56,7 +57,8 @@ public class CommandRepo extends BaseCommand {
case "del":
if (args.length == 2) {
if (YumManager.repo.delRepositories(sender, args[1])) {
sender.sendMessage("§6仓库: §a源地址 " + args[1] + " 已删除 请使用 yum repo update 更新缓存!");
final String reponame = YumManager.repo.getRepoCache(args[1]).name;
sender.sendMessage("§6仓库: §a源仓库 §e" + reponame + " §c已删除 §a请使用 §b/yum repo update §a更新缓存!");
} else {
sender.sendMessage("§6仓库: §c源地址未找到!");
}
@ -68,6 +70,10 @@ public class CommandRepo extends BaseCommand {
sender.sendMessage("§6仓库: §b缓存的插件信息如下 ");
StringUtil.sendStringArray(sender, YumManager.repo.getAllPluginsInfo());
break;
case "all":
sender.sendMessage("§6仓库: §b缓存的仓库信息如下 ");
StringUtil.sendStringArray(sender, YumManager.repo.getRepoCache().getAllRepoInfo());
break;
case "clean":
YumManager.repo.clean();
sender.sendMessage("§6仓库: §a缓存的插件信息已清理!");
@ -85,7 +91,7 @@ public class CommandRepo extends BaseCommand {
public List<String> onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
if (args[0].equalsIgnoreCase("repo")) {
if (args.length == 2) {
return StringUtil.copyPartialMatches(args[1], Arrays.asList(new String[] { "add", "list", "clean", "update", "del" }), new ArrayList<String>());
return StringUtil.copyPartialMatches(args[1], Arrays.asList(new String[] { "add", "all", "list", "clean", "update", "del" }), new ArrayList<String>());
}
if (args.length == 3 && (args[1] == "add" || args[1] == "del")) {
return StringUtil.copyPartialMatches(args[2], YumManager.repo.getRepos().keySet(), new ArrayList<String>());

View File

@ -1,7 +1,10 @@
package cn.citycraft.Yum.manager;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import cn.citycraft.PluginHelper.jsonresult.JsonResult;
import cn.citycraft.PluginHelper.utils.IOUtil;
@ -33,6 +36,14 @@ public class RepoCache {
}
public List<String> getAllRepoInfo() {
final List<String> repoinfo = new ArrayList<String>();
for (final Entry<String, Repositories> repo : repos.entrySet()) {
repoinfo.add(String.format("§d仓库: §e%s §6- §3%s", repo.getValue().name, repo.getKey()));
}
return repoinfo;
}
public Map<String, PluginInfo> getPlugins() {
return plugins;
}

View File

@ -52,15 +52,8 @@ public class RepositoryManager {
}
public boolean addRepositories(final CommandSender sender, final String urlstring) {
final int urllength = urlstring.length();
String url = urlstring.substring(0, urlstring.endsWith("/") ? urllength - 1 : urllength);
if (!url.startsWith("http://")) {
url = "http://" + url;
}
if (!url.endsWith("repo.info")) {
url = url + "/repo.info";
}
final Repositories repo = repocache.addRepo(urlstring);
final String url = handerRepoUrl(urlstring);
final Repositories repo = repocache.addRepo(url);
if (repo == null) {
return false;
}
@ -76,7 +69,7 @@ public class RepositoryManager {
}
public boolean delRepositories(final CommandSender sender, final String urlstring) {
return repocache.removeRepo(urlstring);
return repocache.removeRepo(handerRepoUrl(urlstring));
}
public List<PluginInfo> getAllPlugin() {
@ -131,10 +124,29 @@ public class RepositoryManager {
return repocache.getPlugins();
}
public RepoCache getRepoCache() {
return repocache;
}
public Repositories getRepoCache(final String urlstring) {
return repocache.repos.get(handerRepoUrl(urlstring));
}
public Map<String, Repositories> getRepos() {
return repocache.getRepos();
}
public boolean getRepositories(final CommandSender sender, final String urlstring) {
final int urllength = urlstring.length();
final String url = urlstring.substring(0, urlstring.endsWith("/") ? urllength - 1 : urllength);
handerRepoUrl(url);
final Repositories repo = repocache.addRepo(urlstring);
if (repo == null) {
return false;
}
return updateRepositories(sender, repo);
}
public boolean jsonToCache(final FileConfiguration config) {
try {
final String reposcache = config.getString("reposcache");
@ -176,7 +188,7 @@ public class RepositoryManager {
public boolean updateRepositories(final CommandSender sender) {
repocache.getPlugins().clear();
if (repocache.getRepos().isEmpty()) {
repocache.addRepo("http://citycraft.cn/yumcenter/repo.info");
repocache.addRepo("https://coding.net/u/502647092/p/YumData/git/raw/master/yumcenter/repo.info");
}
final Iterator<Entry<String, Repositories>> keys = repocache.getRepos().entrySet().iterator();
while (keys.hasNext()) {
@ -204,4 +216,17 @@ public class RepositoryManager {
}
return true;
}
private String handerRepoUrl(String url) {
final int urllength = url.length();
url = url.substring(0, url.endsWith("/") ? urllength - 1 : urllength);
if (!url.startsWith("http://")) {
url = "http://" + url;
}
if (!url.endsWith("repo.info")) {
url = url + "/repo.info";
}
return url;
}
}