From 5c730d971ec78344e1304f746436ac0e1d61aea5 Mon Sep 17 00:00:00 2001
From: Joel Challis <git@zvecr.com>
Date: Fri, 6 Jan 2023 04:16:52 +0000
Subject: Migrate submodule dirty check to CLI (#19488)

---
 lib/python/qmk/cli/git/submodule.py | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

(limited to 'lib/python/qmk/cli/git/submodule.py')

diff --git a/lib/python/qmk/cli/git/submodule.py b/lib/python/qmk/cli/git/submodule.py
index bcc3868a52..9f354c021e 100644
--- a/lib/python/qmk/cli/git/submodule.py
+++ b/lib/python/qmk/cli/git/submodule.py
@@ -1,8 +1,10 @@
 import shutil
-from qmk.path import normpath
 
 from milc import cli
 
+from qmk.path import normpath
+from qmk import submodules
+
 REMOVE_DIRS = [
     'lib/ugfx',
     'lib/pico-sdk',
@@ -11,8 +13,22 @@ REMOVE_DIRS = [
 ]
 
 
+@cli.argument('--check', arg_only=True, action='store_true', help='Check if the submodules are dirty, and display a warning if they are.')
+@cli.argument('--sync', arg_only=True, action='store_true', help='Shallow clone any missing submodules.')
 @cli.subcommand('Git Submodule actions.')
 def git_submodule(cli):
+    """Git Submodule actions
+    """
+    if cli.args.check:
+        return all(item['status'] for item in submodules.status().values())
+
+    if cli.args.sync:
+        cli.run(['git', 'submodule', 'sync', '--recursive'])
+        for name, item in submodules.status().items():
+            if item['status'] is None:
+                cli.run(['git', 'submodule', 'update', '--depth=50', '--init', name], capture_output=False)
+        return True
+
     for folder in REMOVE_DIRS:
         if normpath(folder).is_dir():
             print(f"Removing '{folder}'")
-- 
cgit v1.2.3

[cgit] Unable to lock slot /tmp/cgit/ec000000.lock: Permission denied (13)