From 1951f742d95d823f23169a61ee3cc7d918885df0 Mon Sep 17 00:00:00 2001 From: Andres Almiray Date: Tue, 2 Feb 2021 22:49:10 +0100 Subject: [PATCH] Issue #81. Handle implicit layers config file --- .../layrry/launcher/LayrryLauncher.java | 29 +++++++++++++++++++ .../layrry/launcher/internal/Args.java | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/layrry-launcher/src/main/java/org/moditect/layrry/launcher/LayrryLauncher.java b/layrry-launcher/src/main/java/org/moditect/layrry/launcher/LayrryLauncher.java index d1d4172c..872031b9 100644 --- a/layrry-launcher/src/main/java/org/moditect/layrry/launcher/LayrryLauncher.java +++ b/layrry-launcher/src/main/java/org/moditect/layrry/launcher/LayrryLauncher.java @@ -79,6 +79,17 @@ public static void launch(String... args) throws Exception { URL propertiesFileUrl = toUrl(propertiesFile); String layersConfig = arguments.getLayersConfig(); + if (null == layersConfig || layersConfig.isEmpty()) { + layersConfig = resolveLayersConfigFile(basedir); + } + if (null == layersConfig) { + jCommander.getConsole() + .println("Missing --layers-config parameter or local file named layers" + getSupportedConfigFormats()); + jCommander.getConsole().println(""); + printUsage(jCommander); + return; + } + URL layersConfigUrl = toUrl(layersConfig); if (null != layersConfigUrl) { @@ -139,4 +150,22 @@ private static Set getSupportedConfigFormats() { return extensions; } + + private static String resolveLayersConfigFile(File basedir) { + if (basedir == null) { + basedir = new File(System.getProperty("user.dir")); + } + + ServiceLoader parsers = ServiceLoader.load(LayersConfigParser.class, + LayrryLauncher.class.getClassLoader()); + + for (LayersConfigParser parser : parsers) { + File layersConfigFile = new File(basedir, "layers."+parser.getPreferredFileExtension()); + if(layersConfigFile.exists()) { + return layersConfigFile.getAbsolutePath(); + } + } + + return null; + } } diff --git a/layrry-launcher/src/main/java/org/moditect/layrry/launcher/internal/Args.java b/layrry-launcher/src/main/java/org/moditect/layrry/launcher/internal/Args.java index a35a1d3d..bf305825 100644 --- a/layrry-launcher/src/main/java/org/moditect/layrry/launcher/internal/Args.java +++ b/layrry-launcher/src/main/java/org/moditect/layrry/launcher/internal/Args.java @@ -26,7 +26,7 @@ public class Args { @Parameter(description = "[arguments]") private List mainArgs = new ArrayList<>(); - @Parameter(names = "--layers-config", required = true, description = "Layers configuration file. May be a local file or remote URL.") + @Parameter(names = "--layers-config", description = "Layers configuration file. May be a local file or remote URL.") private String layersConfig; @Parameter(names = "--properties", description = "Additional configuration properties. May be a local file or remote URL. Must use the Java properties format.")