submodule.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import shutil
  2. from milc import cli
  3. from qmk.path import normpath
  4. from qmk import submodules
  5. REMOVE_DIRS = [
  6. 'lib/ugfx',
  7. 'lib/pico-sdk',
  8. 'lib/chibios-contrib/ext/mcux-sdk',
  9. 'lib/lvgl',
  10. ]
  11. @cli.argument('--check', arg_only=True, action='store_true', help='Check if the submodules are dirty, and display a warning if they are.')
  12. @cli.argument('--sync', arg_only=True, action='store_true', help='Shallow clone any missing submodules.')
  13. @cli.subcommand('Git Submodule actions.')
  14. def git_submodule(cli):
  15. """Git Submodule actions
  16. """
  17. if cli.args.check:
  18. return all(item['status'] for item in submodules.status().values())
  19. if cli.args.sync:
  20. cli.run(['git', 'submodule', 'sync', '--recursive'])
  21. for name, item in submodules.status().items():
  22. if item['status'] is None:
  23. cli.run(['git', 'submodule', 'update', '--depth=50', '--init', name], capture_output=False)
  24. return True
  25. for folder in REMOVE_DIRS:
  26. if normpath(folder).is_dir():
  27. print(f"Removing '{folder}'")
  28. shutil.rmtree(folder)
  29. cli.run(['git', 'submodule', 'sync', '--recursive'], capture_output=False)
  30. cli.run(['git', 'submodule', 'update', '--init', '--recursive', '--progress'], capture_output=False)