+
+ List<String> dir = opt(options, "-d", "--sockets-dir");
+ if (dir.size() > 1)
+ throw new IllegalArgumentException("Only one run directory can be specified");
+ Path targetStateDirectory;
+ if (dir.isEmpty())
+ targetStateDirectory = Paths.get(System.getProperty("user.dir"));
+ else {
+ targetStateDirectory = Paths.get(dir.get(0));
+ if (!Files.exists(targetStateDirectory)) {
+ // we assume argument is the application id
+ targetStateDirectory = getRunDir().resolve(dir.get(0));
+ }
+ }
+
+ List<String> bundle = opt(options, "-b", "--bundle");
+ if (bundle.size() > 1)
+ throw new IllegalArgumentException("Only one bundle can be specified");
+ String symbolicName = bundle.isEmpty() ? "org.argeo.cms.cli" : bundle.get(0);
+
+ Path script = plainArgs.isEmpty() ? null : Paths.get(plainArgs.get(0));
+ List<String> scriptArgs = new ArrayList<>();
+ for (int i = 1; i < plainArgs.size(); i++)
+ scriptArgs.add(plainArgs.get(i));
+
+ JShellClient client = new JShellClient(targetStateDirectory, symbolicName, script, scriptArgs);
+ client.run();
+ } catch (Exception e) {
+ e.printStackTrace();
+ printHelp(System.err);