From d55c4389ae6936c0afa9e03463dae4da5256be36 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 31 Oct 2022 06:16:28 +0100 Subject: [PATCH] Introduce cms ping command --- .../src/org/argeo/api/cli/HelpCommand.java | 4 ++ .../src/org/argeo/cms/cli/ArgeoCli.java | 1 + .../src/org/argeo/cms/cli/CmsCommands.java | 54 +++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 org.argeo.cms.cli/src/org/argeo/cms/cli/CmsCommands.java diff --git a/org.argeo.api.cli/src/org/argeo/api/cli/HelpCommand.java b/org.argeo.api.cli/src/org/argeo/api/cli/HelpCommand.java index fdcaf0224..cd51d7695 100644 --- a/org.argeo.api.cli/src/org/argeo/api/cli/HelpCommand.java +++ b/org.argeo.api.cli/src/org/argeo/api/cli/HelpCommand.java @@ -120,6 +120,10 @@ public class HelpCommand implements DescribedCommand { } 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(); diff --git a/org.argeo.cms.cli/src/org/argeo/cms/cli/ArgeoCli.java b/org.argeo.cms.cli/src/org/argeo/cms/cli/ArgeoCli.java index 346cb3c3a..b55f9d6ad 100644 --- a/org.argeo.cms.cli/src/org/argeo/cms/cli/ArgeoCli.java +++ b/org.argeo.cms.cli/src/org/argeo/cms/cli/ArgeoCli.java @@ -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 index 000000000..ae2b44174 --- /dev/null +++ b/org.argeo.cms.cli/src/org/argeo/cms/cli/CmsCommands.java @@ -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 { + + @Override + public Void apply(List t) { + CommandLine line = toCommandLine(t); + List 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"; + } + + } +} -- 2.30.2