summaryrefslogtreecommitdiffstats
path: root/lib/python/qmk/cli/git
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2023-01-06 04:16:52 +0000
committerGitHub <noreply@github.com>2023-01-06 04:16:52 +0000
commit5c730d971ec78344e1304f746436ac0e1d61aea5 (patch)
tree839a165c8fb4c9bb2d7645e3f8c6e4ee68e35623 /lib/python/qmk/cli/git
parentb2384f18096d42fb4ed036a2fc0135e6d32ece5d (diff)
Migrate submodule dirty check to CLI (#19488)
Diffstat (limited to 'lib/python/qmk/cli/git')
-rw-r--r--lib/python/qmk/cli/git/submodule.py18
1 files changed, 17 insertions, 1 deletions
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}'")