Add CI check that `cmd-` is not in linux keymaps + check other mods (#32334)

Michael Sloan created

Motivation for the `cmd-` check is that there were a couple keybindings
using `cmd-` in the linux keymap and so these were bound to super /
windows

Release Notes:

- N/A

Change summary

.github/workflows/ci.yml |  3 +++
script/check-keymaps     | 26 ++++++++++++++++++++++++++
script/check-todos       |  2 +-
3 files changed, 30 insertions(+), 1 deletion(-)

Detailed changes

.github/workflows/ci.yml 🔗

@@ -183,6 +183,9 @@ jobs:
       - name: Check for todo! and FIXME comments
         run: script/check-todos
 
+      - name: Check modifier use in keymaps
+        run: script/check-keymaps
+
       - name: Run style checks
         uses: ./.github/actions/check_style
 

script/check-keymaps 🔗

@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+pattern='cmd-'
+result=$(git grep --no-color --line-number --fixed-strings -e "$pattern" -- \
+  'assets/keymaps/' \
+  ':(exclude)assets/keymaps/storybook.json' \
+  ':(exclude)assets/keymaps/default-macos.json' \
+  ':(exclude)assets/keymaps/macos/*.json' || true)
+
+if [[ -n "${result}" ]]; then
+  echo "${result}"
+  echo "Error: Found 'cmd-' in non-macOS keymap files."
+  exit 1
+fi
+
+pattern='super-|win-|fn-'
+result=$(git grep --no-color --line-number --fixed-strings -e "$pattern" -- \
+  'assets/keymaps/' || true)
+
+if [[ -n "${result}" ]]; then
+  echo "${result}"
+  echo "Error: Found 'super-', 'win-', or 'fn-' in keymap files. Currently these aren't used."
+  exit 1
+fi

script/check-todos 🔗

@@ -8,7 +8,7 @@ result=$(git grep --no-color --ignore-case --line-number --extended-regexp -e $p
   ':(exclude).github/workflows/ci.yml' \
   ':(exclude)*criteria.md' \
   ':(exclude)*prompt.md' || true)
-echo "${result}"
 if [[ -n "${result}" ]]; then
+  echo "${result}"
   exit 1
 fi