slawekjaranowski commented on code in PR #1595:
URL: https://github.com/apache/maven/pull/1595#discussion_r1672915609


##########
maven-embedder/src/main/java/org/apache/maven/cli/props/MavenPropertiesLoader.java:
##########
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.cli.props;
+
+import java.nio.file.NoSuchFileException;
+import java.nio.file.Path;
+import java.util.Enumeration;
+import java.util.StringTokenizer;
+import java.util.function.Function;
+
+import static org.apache.maven.cli.props.InterpolationHelper.substVars;
+
+public class MavenPropertiesLoader {
+
+    public static final String INCLUDES_PROPERTY = "${includes}"; // includes
+
+    public static final String OVERRIDE_PREFIX =
+            "maven.override."; // prefix that marks that system property 
should override defaults.
+
+    public static void loadProperties(
+            java.util.Properties properties, Path path, Function<String, 
String> callback, boolean escape)
+            throws Exception {
+        MavenProperties sp = new MavenProperties(false);
+        try {
+            sp.load(path);
+        } catch (NoSuchFileException ex) {
+            // ignore
+        }
+        properties.forEach(
+                (k, v) -> sp.put(k.toString(), escape ? 
InterpolationHelper.escape(v.toString()) : v.toString()));
+        substitute(sp, callback, INCLUDES_PROPERTY);
+        loadIncludes(INCLUDES_PROPERTY, path, sp);
+        substitute(sp, callback);
+        sp.forEach(properties::setProperty);
+    }
+
+    public static void substitute(MavenProperties props, Function<String, 
String> callback) {
+        for (Enumeration<?> e = props.propertyNames(); e.hasMoreElements(); ) {
+            String name = (String) e.nextElement();
+            String value = props.getProperty(name);
+            if (value == null) {
+                value = callback.apply(name);
+            }
+            if (name.startsWith(OVERRIDE_PREFIX)) {
+                String overrideName = name.substring(OVERRIDE_PREFIX.length());
+                props.put(overrideName, substVars(value, name, null, props, 
callback));
+            } else {
+                props.put(name, substVars(value, name, null, props, callback));
+            }
+        }
+        props.keySet().removeIf(k -> k.startsWith(OVERRIDE_PREFIX));
+    }
+
+    private static void substitute(MavenProperties props, Function<String, 
String> callback, String name) {
+        String value = props.getProperty(name);
+        if (value == null) {
+            value = callback.apply(name);
+        }
+        if (value != null) {
+            props.put(name, substVars(value, name, null, props, callback));
+        }
+    }
+
+    private static MavenProperties loadPropertiesFile(Path path, boolean 
failIfNotFound) throws Exception {
+        MavenProperties configProps = new MavenProperties(null, false);
+        try {
+            configProps.load(path);
+        } catch (NoSuchFileException ex) {
+            if (failIfNotFound) {
+                throw ex;
+            }

Review Comment:
   Here we can have other IOException, eg I have:
   
   ```
   Error loading config properties from 
/Users/..../repos/test/test/.mvn/maven.properties/default.properties
   Main: java.nio.file.FileSystemException: 
/Users/..../repos/test/test/.mvn/maven.properties/default.properties: Not a 
directory
   ```
   
   Maybe we should check if file exist?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to