diff --git a/.classpath b/.classpath index f0ff08e68..764c1ea92 100644 --- a/.classpath +++ b/.classpath @@ -10,7 +10,6 @@ - @@ -73,6 +72,7 @@ + diff --git a/NOTICE b/NOTICE index 1417ecaf8..359488f7d 100644 --- a/NOTICE +++ b/NOTICE @@ -151,22 +151,6 @@ JUnit http://junit.org ---------------------------------------------------------------------------- -ant-googlecode ---------------------------------------------------------------------------- - ant-googlecode, released under the - New BSD License - - http://code.google.com/p/ant-googlecode - ---------------------------------------------------------------------------- -GenJar ---------------------------------------------------------------------------- - GenJar, released under the - Apache Software License, Version 1.1. - - http://genjar.sourceforge.net - --------------------------------------------------------------------------- Fancybox image viewer --------------------------------------------------------------------------- @@ -342,3 +326,11 @@ Jedis MIT license https://github.com/xetorthio/jedis + +--------------------------------------------------------------------------- +args4j +--------------------------------------------------------------------------- + args4j, release under the + Apache License 2.0 + + http://args4j.kohsuke.org diff --git a/build.moxie b/build.moxie index ac85aa3e1..7ba9b4c79 100644 --- a/build.moxie +++ b/build.moxie @@ -128,7 +128,6 @@ dependencies: - compile 'com.squareup.dagger:dagger-compiler:1.1.0' :war optional apt # Standard dependencies - compile 'com.intellij:annotations:12.0' :war -- compile 'com.beust:jcommander:1.17' :fedclient :authority - compile 'log4j:log4j:1.2.17' :war :fedclient :authority - compile 'org.slf4j:slf4j-api:1.6.6' :war :fedclient :authority - compile 'org.slf4j:slf4j-log4j12:1.6.6' :war :fedclient :authority @@ -169,6 +168,7 @@ dependencies: - compile 'org.freemarker:freemarker:2.3.19' :war - compile 'com.github.dblock.waffle:waffle-jna:1.5' :war - compile 'org.kohsuke:libpam4j:1.7' :war +- compile 'args4j:args4j:2.0.26' :war :fedclient :authority - compile 'commons-codec:commons-codec:1.7' :war - compile 'redis.clients:jedis:2.3.1' :war - test 'junit' diff --git a/gitblit.iml b/gitblit.iml index fc9656fc4..ba8068ee8 100644 --- a/gitblit.iml +++ b/gitblit.iml @@ -68,17 +68,6 @@ - - - - - - - - - - - @@ -757,6 +746,17 @@ + + + + + + + + + + + diff --git a/releases.moxie b/releases.moxie index 0a57d4008..8b16294ad 100644 --- a/releases.moxie +++ b/releases.moxie @@ -13,11 +13,15 @@ r22: { - Repository mailing lists could not be reset from the Edit Repository page (issue-399) - Ensure the Lucene ticket index is updated on repository deletion. changes: - - Option to allow LDAP users to directly authenticate without performing LDAP searches + - Option to allow LDAP users to directly authenticate without performing LDAP searches (pr-162)) + - Replace JCommander with args4j to be consistent with other tools (ticket-28) additions: - - Added a French translation - dependencyChanges: ~ + - Added a French translation (pr-163) + dependencyChanges: + - args4j 2.0.26 contributors: + - James Moger + - David Ostrovsky - Johann Ollivier-Lapeyre - Jeremie Brebec settings: diff --git a/src/main/java/com/gitblit/AddIndexedBranch.java b/src/main/java/com/gitblit/AddIndexedBranch.java index 4b668c4ed..459e1f00e 100644 --- a/src/main/java/com/gitblit/AddIndexedBranch.java +++ b/src/main/java/com/gitblit/AddIndexedBranch.java @@ -28,11 +28,10 @@ import org.eclipse.jgit.lib.StoredConfig; import org.eclipse.jgit.storage.file.FileRepositoryBuilder; import org.eclipse.jgit.util.FS; +import org.kohsuke.args4j.CmdLineException; +import org.kohsuke.args4j.CmdLineParser; +import org.kohsuke.args4j.Option; -import com.beust.jcommander.JCommander; -import com.beust.jcommander.Parameter; -import com.beust.jcommander.ParameterException; -import com.beust.jcommander.Parameters; import com.gitblit.models.RefModel; import com.gitblit.utils.ArrayUtils; import com.gitblit.utils.JGitUtils; @@ -48,12 +47,12 @@ public class AddIndexedBranch { public static void main(String... args) { Params params = new Params(); - JCommander jc = new JCommander(params); + CmdLineParser parser = new CmdLineParser(params); try { - jc.parse(args); - } catch (ParameterException t) { + parser.parseArgument(args); + } catch (CmdLineException t) { System.err.println(t.getMessage()); - jc.usage(); + parser.printUsage(System.out); return; } @@ -95,7 +94,7 @@ public static void main(String... args) { Set indexedBranches = new LinkedHashSet(); // add all local branches to index - if(params.addAllLocalBranches) { + if (params.addAllLocalBranches) { List list = JGitUtils.getLocalBranches(repository, true, -1); for (RefModel refModel : list) { System.out.println(MessageFormat.format("adding [gitblit] indexBranch={0} for {1}", refModel.getName(), repo)); @@ -129,21 +128,20 @@ public static void main(String... args) { /** - * JCommander Parameters class for AddIndexedBranch. + * Parameters class for AddIndexedBranch. */ - @Parameters(separators = " ") private static class Params { - @Parameter(names = { "--repositoriesFolder" }, description = "The root repositories folder ", required = true) + @Option(name = "--repositoriesFolder", usage = "The root repositories folder ", required = true, metaVar = "PATH") public String folder; - @Parameter(names = { "--branch" }, description = "The branch to index", required = false) + @Option(name = "--branch", usage = "The branch to index", metaVar = "BRANCH") public String branch = "default"; - @Parameter(names = { "--skip" }, description = "Skip the named repository (simple fizzy matching is supported)", required = false) + @Option(name = "--skip", usage = "Skip the named repository (simple fizzy matching is supported)") public List exclusions = new ArrayList(); - @Parameter(names = { "--all-local-branches" }, description = "Add all local branches to index. If specified, the --branch parameter is not considered.", required = false) - public boolean addAllLocalBranches = false; + @Option(name = "--all-local-branches", usage = "Add all local branches to index. If specified, the --branch parameter is not considered.") + public boolean addAllLocalBranches; } } diff --git a/src/main/java/com/gitblit/FederationClient.java b/src/main/java/com/gitblit/FederationClient.java index 628a05dc4..792a63822 100644 --- a/src/main/java/com/gitblit/FederationClient.java +++ b/src/main/java/com/gitblit/FederationClient.java @@ -20,10 +20,10 @@ import java.util.Collection; import java.util.List; -import com.beust.jcommander.JCommander; -import com.beust.jcommander.Parameter; -import com.beust.jcommander.ParameterException; -import com.beust.jcommander.Parameters; +import org.kohsuke.args4j.CmdLineException; +import org.kohsuke.args4j.CmdLineParser; +import org.kohsuke.args4j.Option; + import com.gitblit.manager.FederationManager; import com.gitblit.manager.GitblitManager; import com.gitblit.manager.IGitblit; @@ -47,11 +47,11 @@ public class FederationClient { public static void main(String[] args) { Params params = new Params(); - JCommander jc = new JCommander(params); + CmdLineParser parser = new CmdLineParser(params); try { - jc.parse(args); - } catch (ParameterException t) { - usage(jc, t); + parser.parseArgument(args); + } catch (CmdLineException t) { + usage(parser, t); } System.out.println("Gitblit Federation Client v" + Constants.getVersion() + " (" + Constants.getBuildDate() + ")"); @@ -77,7 +77,6 @@ public static void main(String[] args) { model.token = params.token; model.mirror = params.mirror; model.bare = params.bare; - model.frequency = params.frequency; model.folder = ""; registrations.add(model); } @@ -112,7 +111,7 @@ public void reschedule(FederationModel registration) { System.exit(0); } - private static void usage(JCommander jc, ParameterException t) { + private static void usage(CmdLineParser parser, CmdLineException t) { System.out.println(Constants.getGitBlitVersion()); System.out.println(); if (t != null) { @@ -120,40 +119,36 @@ private static void usage(JCommander jc, ParameterException t) { System.out.println(); } - if (jc != null) { - jc.usage(); + if (parser != null) { + parser.printUsage(System.out); } System.exit(0); } /** - * JCommander Parameters class for FederationClient. + * Parameters class for FederationClient. */ - @Parameters(separators = " ") private static class Params { - @Parameter(names = { "--registrations" }, description = "Gitblit Federation Registrations File", required = false) + @Option(name = "--registrations", usage = "Gitblit Federation Registrations File", metaVar = "FILE") public String registrationsFile = "${baseFolder}/federation.properties"; - @Parameter(names = { "--url" }, description = "URL of Gitblit instance to mirror from", required = false) + @Option(name = "--url", usage = "URL of Gitblit instance to mirror from", metaVar = "URL") public String url; - @Parameter(names = { "--mirror" }, description = "Mirror repositories", required = false) + @Option(name = "--mirror", usage = "Mirror repositories") public boolean mirror; - @Parameter(names = { "--bare" }, description = "Create bare repositories", required = false) + @Option(name = "--bare", usage = "Create bare repositories") public boolean bare; - @Parameter(names = { "--token" }, description = "Federation Token", required = false) + @Option(name = "--token", usage = "Federation Token", metaVar = "TOKEN") public String token; - @Parameter(names = { "--frequency" }, description = "Period to wait between pull attempts (requires --daemon)", required = false) - public String frequency = "60 mins"; - - @Parameter(names = { "--baseFolder" }, description = "Base folder for received data", required = false) + @Option(name = "--baseFolder", usage = "Base folder for received data", metaVar = "PATH") public String baseFolder; - @Parameter(names = { "--repositoriesFolder" }, description = "Destination folder for cloned repositories", required = false) + @Option(name = "--repositoriesFolder", usage = "Destination folder for cloned repositories", metaVar = "PATH") public String repositoriesFolder; } diff --git a/src/main/java/com/gitblit/GitBlitServer.java b/src/main/java/com/gitblit/GitBlitServer.java index 1e51577a7..64d3caddb 100644 --- a/src/main/java/com/gitblit/GitBlitServer.java +++ b/src/main/java/com/gitblit/GitBlitServer.java @@ -55,13 +55,12 @@ import org.eclipse.jgit.storage.file.FileBasedConfig; import org.eclipse.jgit.util.FS; import org.eclipse.jgit.util.FileUtils; +import org.kohsuke.args4j.CmdLineException; +import org.kohsuke.args4j.CmdLineParser; +import org.kohsuke.args4j.Option; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.beust.jcommander.JCommander; -import com.beust.jcommander.Parameter; -import com.beust.jcommander.ParameterException; -import com.beust.jcommander.Parameters; import com.gitblit.authority.GitblitAuthority; import com.gitblit.authority.NewCertificateConfig; import com.gitblit.servlet.GitblitContext; @@ -96,7 +95,7 @@ public static void main(String... args) { // filter out the baseFolder parameter List filtered = new ArrayList(); String folder = "data"; - for (int i = 0; i< args.length; i++) { + for (int i = 0; i < args.length; i++) { String arg = args[i]; if (arg.equals("--baseFolder")) { if (i + 1 == args.length) { @@ -113,14 +112,14 @@ public static void main(String... args) { Params.baseFolder = folder; Params params = new Params(); - JCommander jc = new JCommander(params); + CmdLineParser parser = new CmdLineParser(params); try { - jc.parse(filtered.toArray(new String[filtered.size()])); + parser.parseArgument(filtered); if (params.help) { - server.usage(jc, null); + server.usage(parser, null); } - } catch (ParameterException t) { - server.usage(jc, t); + } catch (CmdLineException t) { + server.usage(parser, t); } if (params.stop) { @@ -133,10 +132,10 @@ public static void main(String... args) { /** * Display the command line usage of Gitblit GO. * - * @param jc + * @param parser * @param t */ - protected final void usage(JCommander jc, ParameterException t) { + protected final void usage(CmdLineParser parser, CmdLineException t) { System.out.println(Constants.BORDER); System.out.println(Constants.getGitBlitVersion()); System.out.println(Constants.BORDER); @@ -145,8 +144,8 @@ protected final void usage(JCommander jc, ParameterException t) { System.out.println(t.getMessage()); System.out.println(); } - if (jc != null) { - jc.usage(); + if (parser != null) { + parser.printUsage(System.out); System.out .println("\nExample:\n java -server -Xmx1024M -jar gitblit.jar --repositoriesFolder c:\\git --httpPort 80 --httpsPort 443"); } @@ -624,9 +623,8 @@ public void run() { } /** - * JCommander Parameters class for GitBlitServer. + * Parameters class for GitBlitServer. */ - @Parameters(separators = " ") public static class Params { public static String baseFolder; @@ -636,69 +634,69 @@ public static class Params { /* * Server parameters */ - @Parameter(names = { "-h", "--help" }, description = "Show this help") + @Option(name = "--help", aliases = { "-h"}, usage = "Show this help") public Boolean help = false; - @Parameter(names = { "--stop" }, description = "Stop Server") + @Option(name = "--stop", usage = "Stop Server") public Boolean stop = false; - @Parameter(names = { "--tempFolder" }, description = "Folder for server to extract built-in webapp") + @Option(name = "--tempFolder", usage = "Folder for server to extract built-in webapp", metaVar="PATH") public String temp = FILESETTINGS.getString(Keys.server.tempFolder, "temp"); - @Parameter(names = { "--dailyLogFile" }, description = "Log to a rolling daily log file INSTEAD of stdout.") + @Option(name = "--dailyLogFile", usage = "Log to a rolling daily log file INSTEAD of stdout.") public Boolean dailyLogFile = false; /* * GIT Servlet Parameters */ - @Parameter(names = { "--repositoriesFolder" }, description = "Git Repositories Folder") + @Option(name = "--repositoriesFolder", usage = "Git Repositories Folder", metaVar="PATH") public String repositoriesFolder = FILESETTINGS.getString(Keys.git.repositoriesFolder, "git"); /* * Authentication Parameters */ - @Parameter(names = { "--userService" }, description = "Authentication and Authorization Service (filename or fully qualified classname)") + @Option(name = "--userService", usage = "Authentication and Authorization Service (filename or fully qualified classname)") public String userService = FILESETTINGS.getString(Keys.realm.userService, "users.conf"); /* * JETTY Parameters */ - @Parameter(names = { "--useNio" }, description = "Use NIO Connector else use Socket Connector.") + @Option(name = "--useNio", usage = "Use NIO Connector else use Socket Connector.") public Boolean useNIO = FILESETTINGS.getBoolean(Keys.server.useNio, true); - @Parameter(names = "--httpPort", description = "HTTP port for to serve. (port <= 0 will disable this connector)") + @Option(name = "--httpPort", usage = "HTTP port for to serve. (port <= 0 will disable this connector)", metaVar="PORT") public Integer port = FILESETTINGS.getInteger(Keys.server.httpPort, 0); - @Parameter(names = "--httpsPort", description = "HTTPS port to serve. (port <= 0 will disable this connector)") + @Option(name = "--httpsPort", usage = "HTTPS port to serve. (port <= 0 will disable this connector)", metaVar="PORT") public Integer securePort = FILESETTINGS.getInteger(Keys.server.httpsPort, 8443); - @Parameter(names = "--ajpPort", description = "AJP port to serve. (port <= 0 will disable this connector)") + @Option(name = "--ajpPort", usage = "AJP port to serve. (port <= 0 will disable this connector)", metaVar="PORT") public Integer ajpPort = FILESETTINGS.getInteger(Keys.server.ajpPort, 0); - @Parameter(names = "--gitPort", description = "Git Daemon port to serve. (port <= 0 will disable this connector)") + @Option(name = "--gitPort", usage = "Git Daemon port to serve. (port <= 0 will disable this connector)", metaVar="PORT") public Integer gitPort = FILESETTINGS.getInteger(Keys.git.daemonPort, 9418); - @Parameter(names = "--alias", description = "Alias of SSL certificate in keystore for serving https.") + @Option(name = "--alias", usage = "Alias of SSL certificate in keystore for serving https.", metaVar="ALIAS") public String alias = FILESETTINGS.getString(Keys.server.certificateAlias, ""); - @Parameter(names = "--storePassword", description = "Password for SSL (https) keystore.") + @Option(name = "--storePassword", usage = "Password for SSL (https) keystore.", metaVar="PASSWORD") public String storePassword = FILESETTINGS.getString(Keys.server.storePassword, ""); - @Parameter(names = "--shutdownPort", description = "Port for Shutdown Monitor to listen on. (port <= 0 will disable this monitor)") + @Option(name = "--shutdownPort", usage = "Port for Shutdown Monitor to listen on. (port <= 0 will disable this monitor)", metaVar="PORT") public Integer shutdownPort = FILESETTINGS.getInteger(Keys.server.shutdownPort, 8081); - @Parameter(names = "--requireClientCertificates", description = "Require client X509 certificates for https connections.") + @Option(name = "--requireClientCertificates", usage = "Require client X509 certificates for https connections.") public Boolean requireClientCertificates = FILESETTINGS.getBoolean(Keys.server.requireClientCertificates, false); /* * Setting overrides */ - @Parameter(names = { "--settings" }, description = "Path to alternative settings") + @Option(name = "--settings", usage = "Path to alternative settings", metaVar="FILE") public String settingsfile; - @Parameter(names = { "--ldapLdifFile" }, description = "Path to LDIF file. This will cause an in-memory LDAP server to be started according to gitblit settings") + @Option(name = "--ldapLdifFile", usage = "Path to LDIF file. This will cause an in-memory LDAP server to be started according to gitblit settings", metaVar="FILE") public String ldapLdifFile; } diff --git a/src/main/java/com/gitblit/ReindexTickets.java b/src/main/java/com/gitblit/ReindexTickets.java index af3ca0b2a..f3d6d266e 100644 --- a/src/main/java/com/gitblit/ReindexTickets.java +++ b/src/main/java/com/gitblit/ReindexTickets.java @@ -20,10 +20,10 @@ import java.util.ArrayList; import java.util.List; -import com.beust.jcommander.JCommander; -import com.beust.jcommander.Parameter; -import com.beust.jcommander.ParameterException; -import com.beust.jcommander.Parameters; +import org.kohsuke.args4j.CmdLineException; +import org.kohsuke.args4j.CmdLineParser; +import org.kohsuke.args4j.Option; + import com.gitblit.manager.IRepositoryManager; import com.gitblit.manager.IRuntimeManager; import com.gitblit.manager.RepositoryManager; @@ -66,15 +66,15 @@ public static void main(String... args) { Params.baseFolder = folder; Params params = new Params(); - JCommander jc = new JCommander(params); + CmdLineParser parser = new CmdLineParser(params); try { - jc.parse(filtered.toArray(new String[filtered.size()])); + parser.parseArgument(filtered); if (params.help) { - reindex.usage(jc, null); + reindex.usage(parser, null); return; } - } catch (ParameterException t) { - reindex.usage(jc, t); + } catch (CmdLineException t) { + reindex.usage(parser, t); return; } @@ -94,10 +94,10 @@ public static void main(String... args) { /** * Display the command line usage of ReindexTickets. * - * @param jc + * @param parser * @param t */ - protected final void usage(JCommander jc, ParameterException t) { + protected final void usage(CmdLineParser parser, CmdLineException t) { System.out.println(Constants.BORDER); System.out.println(Constants.getGitBlitVersion()); System.out.println(Constants.BORDER); @@ -106,8 +106,8 @@ protected final void usage(JCommander jc, ParameterException t) { System.out.println(t.getMessage()); System.out.println(); } - if (jc != null) { - jc.usage(); + if (parser != null) { + parser.printUsage(System.out); System.out .println("\nExample:\n java -gitblit.jar com.gitblit.ReindexTickets --baseFolder c:\\gitblit-data"); } @@ -162,22 +162,21 @@ protected void reindex(File baseFolder, IStoredSettings settings) { } /** - * JCommander Parameters. + * Parameters. */ - @Parameters(separators = " ") public static class Params { public static String baseFolder; - @Parameter(names = { "-h", "--help" }, description = "Show this help") + @Option(name = "--help", aliases = { "-h"}, usage = "Show this help") public Boolean help = false; private final FileSettings FILESETTINGS = new FileSettings(new File(baseFolder, Constants.PROPERTIES_FILE).getAbsolutePath()); - @Parameter(names = { "--repositoriesFolder" }, description = "Git Repositories Folder") + @Option(name = "--repositoriesFolder", usage = "Git Repositories Folder", metaVar = "PATH") public String repositoriesFolder = FILESETTINGS.getString(Keys.git.repositoriesFolder, "git"); - @Parameter(names = { "--settings" }, description = "Path to alternative settings") + @Option(name = "--settings", usage = "Path to alternative settings", metaVar = "FILE") public String settingsfile; } } diff --git a/src/site/design.mkd b/src/site/design.mkd index 9f77e30ab..8351dd9c5 100644 --- a/src/site/design.mkd +++ b/src/site/design.mkd @@ -32,7 +32,7 @@ The following dependencies are automatically downloaded by Gitblit GO (or alread - [Jetty](http://eclipse.org/jetty) (Apache 2.0, EPL 1.0) - [SLF4J](http://www.slf4j.org) (MIT/X11) - [Log4j](http://logging.apache.org/log4j) (Apache 2.0) -- [JCommander](http://jcommander.org) (Apache 2.0) +- [args4j](http://args4j.kohsuke.org) (Apache 2.0) - [BouncyCastle](http://www.bouncycastle.org) (MIT/X11) - [JSch - Java Secure Channel](http://www.jcraft.com/jsch) (BSD) - [Rome](http://rome.dev.java.net) (Apache 1.1) diff --git a/src/test/java/de/akquinet/devops/GitBlitServer4UITests.java b/src/test/java/de/akquinet/devops/GitBlitServer4UITests.java index 5e361b99c..8d6d703b2 100644 --- a/src/test/java/de/akquinet/devops/GitBlitServer4UITests.java +++ b/src/test/java/de/akquinet/devops/GitBlitServer4UITests.java @@ -4,8 +4,9 @@ import java.util.ArrayList; import java.util.List; -import com.beust.jcommander.JCommander; -import com.beust.jcommander.ParameterException; +import org.kohsuke.args4j.CmdLineException; +import org.kohsuke.args4j.CmdLineParser; + import com.gitblit.GitBlitServer; import com.gitblit.IStoredSettings; import com.gitblit.Keys; @@ -36,14 +37,14 @@ public static void main(String... args) { Params.baseFolder = folder; Params params = new Params(); - JCommander jc = new JCommander(params); + CmdLineParser parser = new CmdLineParser(params); try { - jc.parse(filtered.toArray(new String[filtered.size()])); + parser.parseArgument(filtered); if (params.help) { - server.usage(jc, null); + server.usage(parser, null); } - } catch (ParameterException t) { - server.usage(jc, t); + } catch (CmdLineException t) { + server.usage(parser, t); } if (params.stop) {