Extend behavior: optional dots in file extensions
The `enabledFileExtensions` configuration setting now accepts extensions
with or without leading dots ("."), simplifying the plugin
configuration.
Change-Id: I452f025c34a9b33a881f10899938364f0b332d9e
Signed-off-by: Patrizio <patrizio.gelosi@amarulasolutions.com>
diff --git a/README.md b/README.md
index 7f414a1..26344fa 100644
--- a/README.md
+++ b/README.md
@@ -195,6 +195,8 @@
- `enabledFileExtensions`: This limits the reviewed files to the given types. Default file extensions are ".py, .java,
.js, .ts, .html, .css, .cs, .cpp, .c, .h, .php, .rb, .swift, .kt, .r, .jl, .go, .scala, .pl, .pm, .rs, .dart, .lua,
.sh, .vb, .bat".
+
+ **NOTE**: Extensions without a leading dot (e.g., 'py') are also accepted.
- `enabledVoting`: Initially disabled (false). If set to true, allows ChatGPT to cast a vote on each reviewed Patch Set
by assigning a score.
- `votingMinScore`: The lowest possible score that can be given to a Patch Set (Default value: -1).
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/config/ConfigCore.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/config/ConfigCore.java
index c2fecf1..3bd116f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/config/ConfigCore.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/config/ConfigCore.java
@@ -180,6 +180,12 @@
return value.isEmpty() ? List.of() : TextUtils.splitString(value);
}
+ protected List<String> splitConfigRemoveDots(String value) {
+ return splitConfig(value).stream()
+ .map(s -> s.replaceAll("^\\.", ""))
+ .toList();
+ }
+
protected List<String> splitListIntoItems(String key, List<String> defaultValue) {
log.debug("Retrieving and splitting Global and Project configuration items for key {}", key);
List<String> items = new ArrayList<>();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/config/Configuration.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/config/Configuration.java
index 2d81ec5..a8dbb57 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/config/Configuration.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/config/Configuration.java
@@ -257,7 +257,7 @@
}
public List<String> getEnabledFileExtensions() {
- return splitConfig(getString(KEY_ENABLED_FILE_EXTENSIONS, DEFAULT_ENABLED_FILE_EXTENSIONS));
+ return splitConfigRemoveDots(getString(KEY_ENABLED_FILE_EXTENSIONS, DEFAULT_ENABLED_FILE_EXTENSIONS));
}
public List<String> getDirective() {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/utils/FileUtils.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/utils/FileUtils.java
index ee516b8..0cfb456 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/utils/FileUtils.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/utils/FileUtils.java
@@ -40,8 +40,7 @@
}
public static boolean matchesExtensionList(String filename, List<String> extensions) {
- int extIndex = filename.lastIndexOf('.');
- boolean matches = extIndex >= 1 && extensions.contains(filename.substring(extIndex));
+ boolean matches = extensions.contains(getExtension(filename));
log.debug("Filename '{}' matches extension list: {}", filename, matches);
return matches;
}
@@ -51,4 +50,12 @@
log.debug("Original filename: '{}', Sanitized filename: '{}'", filename, sanitized);
return sanitized;
}
+
+ public static String getExtension(String filename) {
+ int lastDotIndex = filename.lastIndexOf('.');
+ if (lastDotIndex <= 0 || lastDotIndex == filename.length() - 1) {
+ return "";
+ }
+ return filename.substring(lastDotIndex + 1);
+ }
}
diff --git a/src/test/resources/__files/commands/dumpConfig.txt b/src/test/resources/__files/commands/dumpConfig.txt
index 4ac9f08..16193c7 100644
--- a/src/test/resources/__files/commands/dumpConfig.txt
+++ b/src/test/resources/__files/commands/dumpConfig.txt
@@ -10,32 +10,32 @@
disabledUsers:
enableMessageDebugging: true
enabledFileExtensions:
- .py
- .java
- .js
- .ts
- .html
- .css
- .cs
- .cpp
- .c
- .h
- .php
- .rb
- .swift
- .kt
- .r
- .jl
- .go
- .scala
- .pl
- .pm
- .rs
- .dart
- .lua
- .sh
- .vb
- .bat
+ py
+ java
+ js
+ ts
+ html
+ css
+ cs
+ cpp
+ c
+ h
+ php
+ rb
+ swift
+ kt
+ r
+ jl
+ go
+ scala
+ pl
+ pm
+ rs
+ dart
+ lua
+ sh
+ vb
+ bat
enabledGroups:
ALL
enabledProjects: