aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/linters/no_format_trailing_comma.rb
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/linters/no_format_trailing_comma.rb')
-rw-r--r--scripts/linters/no_format_trailing_comma.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/scripts/linters/no_format_trailing_comma.rb b/scripts/linters/no_format_trailing_comma.rb
new file mode 100644
index 0000000..3e474a7
--- /dev/null
+++ b/scripts/linters/no_format_trailing_comma.rb
@@ -0,0 +1,27 @@
+def no_format_trailing_comma(root_dir, excludes = [])
+ crates_dir = root_dir.join('crates')
+ raw = `grep -rn --include='*.rs' -e ',)' #{crates_dir}`
+
+ errors = []
+ raw.each_line do |line|
+ line = line.chomp
+ path, lineno, content = line.split(':', 3)
+ next if content.nil?
+
+ relative = Pathname.new(path).relative_path_from(root_dir).to_s
+ next if excludes.include?(relative)
+
+ # `(,)` is a macro repetition fragment (e.g. `$(,)?`).
+ next if content.match?(/\(,\)/)
+
+ errors << "#{relative}:#{lineno}: trailing `,)` before a closing paren"
+ end
+
+ return true if errors.empty?
+
+ puts 'Found `,)` introduced by formatting. Remove it.'
+ errors.each do |err|
+ puts " #{err}"
+ end
+ false
+end