]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.cli/src/org/argeo/cms/cli/StaticCmsLaunch.java
Use latest build system
[lgpl/argeo-commons.git] / org.argeo.cms.cli / src / org / argeo / cms / cli / StaticCmsLaunch.java
1 package org.argeo.cms.cli;
2
3 import java.lang.management.ManagementFactory;
4 import java.nio.file.Path;
5 import java.nio.file.Paths;
6 import java.util.List;
7
8 import org.apache.commons.cli.CommandLine;
9 import org.apache.commons.cli.Option;
10 import org.apache.commons.cli.Options;
11 import org.argeo.api.cli.DescribedCommand;
12 import org.argeo.cms.runtime.StaticCms;
13
14 public class StaticCmsLaunch implements DescribedCommand<String> {
15 private Option dataOption;
16
17 @Override
18 public Options getOptions() {
19 Options options = new Options();
20 dataOption = Option.builder().longOpt("data").hasArg().required()
21 .desc("path to the writable data area (mandatory)").build();
22 options.addOption(dataOption);
23 return options;
24 }
25
26 @Override
27 public String apply(List<String> args) {
28 CommandLine cl = toCommandLine(args);
29 String dataPath = cl.getOptionValue(dataOption);
30
31 Path instancePath = Paths.get(dataPath);
32 System.setProperty("osgi.instance.area", instancePath.toUri().toString());
33 System.setProperty("argeo.http.port", "0");
34
35 StaticCms staticCms = new StaticCms();
36 Runtime.getRuntime().addShutdownHook(new Thread(() -> staticCms.stop(), "Static CMS Shutdown"));
37 staticCms.start();
38
39 long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime();
40 System.out.println("Static CMS available in " + jvmUptime + " ms.");
41
42 staticCms.waitForStop();
43
44 return null;
45 }
46
47 @Override
48 public String getDescription() {
49 return "Launch a static CMS";
50 }
51
52 }