Introduce cms ping command
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 31 Oct 2022 05:16:28 +0000 (06:16 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 31 Oct 2022 05:16:28 +0000 (06:16 +0100)
org.argeo.api.cli/src/org/argeo/api/cli/HelpCommand.java
org.argeo.cms.cli/src/org/argeo/cms/cli/ArgeoCli.java
org.argeo.cms.cli/src/org/argeo/cms/cli/CmsCommands.java [new file with mode: 0644]

index fdcaf0224c8797bffb1665f4e1f3ddaa354cf100..cd51d76953b6e4f63b23914ad9edbac4313e45dd 100644 (file)
@@ -120,6 +120,10 @@ public class HelpCommand implements DescribedCommand<String> {
        }
 
        public static void printHelp(CommandsCli commandsCli, String commandName, StringWriter out) {
+               if (commandName == null) {
+                       printHelp(commandsCli, out);
+                       return;
+               }
                DescribedCommand<?> command = (DescribedCommand<?>) commandsCli.getCommand(commandName);
                String usage = commandsCli.getHelpCommand().getCommandUsage(commandName, command);
                HelpFormatter formatter = new HelpFormatter();
index 346cb3c3a8d860c32cc14b5499e3ea88d9e77c3c..b55f9d6ade5bdcbd0b6d3a2fa501020712bca56e 100644 (file)
@@ -15,6 +15,7 @@ public class ArgeoCli extends CommandsCli {
                                Option.builder("D").hasArgs().argName("property=value").desc("use value for given property").build());
 
                // common
+               addCommandsCli(new CmsCommands("cms"));
                addCommandsCli(new SshCli("ssh"));
                addCommandsCli(new PosixCommands("posix"));
                addCommandsCli(new FsCommands("fs"));
diff --git a/org.argeo.cms.cli/src/org/argeo/cms/cli/CmsCommands.java b/org.argeo.cms.cli/src/org/argeo/cms/cli/CmsCommands.java
new file mode 100644 (file)
index 0000000..ae2b441
--- /dev/null
@@ -0,0 +1,54 @@
+package org.argeo.cms.cli;
+
+import java.net.URI;
+import java.util.List;
+
+import org.apache.commons.cli.CommandLine;
+import org.argeo.api.cli.CommandArgsException;
+import org.argeo.api.cli.CommandsCli;
+import org.argeo.api.cli.DescribedCommand;
+import org.argeo.cms.client.WsPing;
+
+public class CmsCommands extends CommandsCli {
+
+       public CmsCommands(String commandName) {
+               super(commandName);
+               addCommand("ping", new Ping());
+       }
+
+       @Override
+       public String getDescription() {
+               return "Utilities related to an Argeo CMS";
+       }
+
+       class Ping implements DescribedCommand<Void> {
+
+               @Override
+               public Void apply(List<String> t) {
+                       CommandLine line = toCommandLine(t);
+                       List<String> remaining = line.getArgList();
+                       if (remaining.size() == 0) {
+                               throw new CommandArgsException("There must be at least one argument");
+                       }
+                       String uriArg = remaining.get(0);
+                       // TODO make it more robust (trailing /, etc.)
+                       URI uri = URI.create(uriArg);
+                       if ("".equals(uri.getPath())) {
+                               uri = URI.create(uri.toString() + "/cms/status/ping");
+                       }
+                       new WsPing(uri).run();
+                       return null;
+               }
+
+               @Override
+               public String getUsage() {
+                       return "[ws|wss]://host:port/";
+               }
+
+               @Override
+               public String getDescription() {
+                       return "Test whether an Argeo CMS is available, without auhtentication";
+               }
+
+       }
+}