Skip to content

Commit a9a9d25

Browse files
committed
Warn if the user sets a property that we don't recognise.
1 parent b775ac1 commit a9a9d25

File tree

2 files changed

+34
-7
lines changed

2 files changed

+34
-7
lines changed

core/src/main/java/org/jruby/util/cli/ArgumentProcessor.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,7 @@
3939
import java.io.File;
4040
import java.io.FileNotFoundException;
4141
import java.io.IOException;
42-
import java.util.ArrayList;
43-
import java.util.Arrays;
44-
import java.util.List;
42+
import java.util.*;
4543

4644
/**
4745
* Encapsulated logic for processing JRuby's command-line arguments.
@@ -94,6 +92,8 @@ public void processArguments() {
9492
}
9593

9694
public void processArguments(boolean inline) {
95+
checkProperties();
96+
9797
while (argumentIndex < arguments.size() && isInterpreterArgument(arguments.get(argumentIndex).originalValue)) {
9898
processArgument();
9999
argumentIndex++;
@@ -679,4 +679,24 @@ public static void checkGraalVersion() {
679679
}
680680
}
681681

682+
private void checkProperties() {
683+
final Set<String> propertyNames = new HashSet<>();
684+
propertyNames.addAll(Options.getPropertyNames());
685+
propertyNames.add("jruby.home");
686+
propertyNames.add("jruby.script");
687+
propertyNames.add("jruby.shell");
688+
propertyNames.add("jruby.lib");
689+
propertyNames.add("jruby.bindir");
690+
propertyNames.add("jruby.jar");
691+
propertyNames.add("jruby.compat.version");
692+
693+
for (String propertyName : System.getProperties().stringPropertyNames()) {
694+
if (propertyName.startsWith("jruby.")) {
695+
if (!propertyNames.contains(propertyName)) {
696+
System.err.println("jruby: warning: unknown property " + propertyName);
697+
}
698+
}
699+
}
700+
}
701+
682702
}

core/src/main/java/org/jruby/util/cli/Options.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@
2828
***** END LICENSE BLOCK *****/
2929
package org.jruby.util.cli;
3030

31-
import java.util.ArrayList;
32-
import java.util.Collection;
33-
import java.util.Collections;
34-
import java.util.List;
31+
import java.util.*;
3532

3633
import com.headius.options.Option;
3734
import org.jruby.TruffleBridge;
@@ -338,4 +335,14 @@ private static void list(SearchMode mode, String string) {
338335
}
339336
}
340337

338+
public static Set<String> getPropertyNames() {
339+
final Set<String> propertyNames = new HashSet<String>();
340+
341+
for (Option option : PROPERTIES) {
342+
propertyNames.add(option.propertyName());
343+
}
344+
345+
return Collections.unmodifiableSet(propertyNames);
346+
}
347+
341348
}

0 commit comments

Comments
 (0)