Skip to content

Commit

Permalink
Migrate submodule dirty check to CLI (#19488)
Browse files Browse the repository at this point in the history
  • Loading branch information
zvecr authored Jan 6, 2023
1 parent b2384f1 commit 5c730d9
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 15 deletions.
16 changes: 2 additions & 14 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -394,21 +394,9 @@ ifdef NOT_REPO
printf "$(MSG_NOT_REPO)"
endif
ifndef SKIP_GIT
$(QMK_BIN) git-submodule --sync
# Check if the submodules are dirty, and display a warning if they are
if [ ! -e lib/chibios ]; then git submodule sync lib/chibios && git submodule update --depth 50 --init lib/chibios; fi
if [ ! -e lib/chibios-contrib ]; then git submodule sync lib/chibios-contrib && git submodule update --depth 50 --init lib/chibios-contrib; fi
if [ ! -e lib/lufa ]; then git submodule sync lib/lufa && git submodule update --depth 50 --init lib/lufa; fi
if [ ! -e lib/vusb ]; then git submodule sync lib/vusb && git submodule update --depth 50 --init lib/vusb; fi
if [ ! -e lib/printf ]; then git submodule sync lib/printf && git submodule update --depth 50 --init lib/printf; fi
if [ ! -e lib/pico-sdk ]; then git submodule sync lib/pico-sdk && git submodule update --depth 50 --init lib/pico-sdk; fi
if [ ! -e lib/lvgl ]; then git submodule sync lib/lvgl && git submodule update --depth 50 --init lib/lvgl; fi
git submodule status --recursive 2>/dev/null | \
while IFS= read -r x; do \
case "$$x" in \
\ *) ;; \
*) printf "$(MSG_SUBMODULE_DIRTY)";break;; \
esac \
done
if ! $(QMK_BIN) git-submodule --check 1> /dev/null 2>&1; then printf "$(MSG_SUBMODULE_DIRTY)"; fi
endif
rm -f $(ERROR_FILE) > /dev/null 2>&1
$(eval $(call PARSE_RULE,$@))
Expand Down
18 changes: 17 additions & 1 deletion lib/python/qmk/cli/git/submodule.py
Original file line number Diff line number Diff line change
@@ -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',
Expand All @@ -11,8 +13,22 @@
]


@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}'")
Expand Down

0 comments on commit 5c730d9

Please sign in to comment.