X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.cli%2Fsrc%2Forg%2Fargeo%2Fcms%2Fcli%2FStaticCmsLaunch.java;fp=org.argeo.cms.cli%2Fsrc%2Forg%2Fargeo%2Fcms%2Fcli%2FStaticCmsLaunch.java;h=9b535983237d81307048f018faa0d0eb0578cd4d;hb=81d9084e2c9fd9d33ca1d864171d28f9564647d8;hp=0000000000000000000000000000000000000000;hpb=e9d0731a65b0d3523906c58f987ad9610c4286b7;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.cli/src/org/argeo/cms/cli/StaticCmsLaunch.java b/org.argeo.cms.cli/src/org/argeo/cms/cli/StaticCmsLaunch.java new file mode 100644 index 000000000..9b5359832 --- /dev/null +++ b/org.argeo.cms.cli/src/org/argeo/cms/cli/StaticCmsLaunch.java @@ -0,0 +1,52 @@ +package org.argeo.cms.cli; + +import java.lang.management.ManagementFactory; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.argeo.api.cli.DescribedCommand; +import org.argeo.cms.runtime.StaticCms; + +public class StaticCmsLaunch implements DescribedCommand { + private Option dataOption; + + @Override + public Options getOptions() { + Options options = new Options(); + dataOption = Option.builder().longOpt("data").hasArg().required() + .desc("path to the writable data area (mandatory)").build(); + options.addOption(dataOption); + return options; + } + + @Override + public String apply(List args) { + CommandLine cl = toCommandLine(args); + String dataPath = cl.getOptionValue(dataOption); + + Path instancePath = Paths.get(dataPath); + System.setProperty("osgi.instance.area", instancePath.toUri().toString()); + System.setProperty("argeo.http.port", "0"); + + StaticCms staticCms = new StaticCms(); + Runtime.getRuntime().addShutdownHook(new Thread(() -> staticCms.stop(), "Static CMS Shutdown")); + staticCms.start(); + + long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime(); + System.out.println("Static CMS available in " + jvmUptime + " ms."); + + staticCms.waitForStop(); + + return null; + } + + @Override + public String getDescription() { + return "Launch a static CMS"; + } + +}