forked from mirrors/qmk_firmware
Add force support to 'qmk git-submodule' (#19705)
This commit is contained in:
parent
66d56a9480
commit
e35bb8ebfa
1 changed files with 18 additions and 3 deletions
|
@ -7,14 +7,21 @@ from qmk import submodules
|
||||||
|
|
||||||
REMOVE_DIRS = [
|
REMOVE_DIRS = [
|
||||||
'lib/ugfx',
|
'lib/ugfx',
|
||||||
'lib/pico-sdk',
|
|
||||||
'lib/chibios-contrib/ext/mcux-sdk',
|
'lib/chibios-contrib/ext/mcux-sdk',
|
||||||
'lib/lvgl',
|
]
|
||||||
|
|
||||||
|
IGNORE_DIRS = [
|
||||||
|
'lib/arm_atsam',
|
||||||
|
'lib/fnv',
|
||||||
|
'lib/lib8tion',
|
||||||
|
'lib/python',
|
||||||
|
'lib/usbhost',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@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('--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.argument('--sync', arg_only=True, action='store_true', help='Shallow clone any missing submodules.')
|
||||||
|
@cli.argument('-f', '--force', action='store_true', help='Flag to remove unexpected directories')
|
||||||
@cli.subcommand('Git Submodule actions.')
|
@cli.subcommand('Git Submodule actions.')
|
||||||
def git_submodule(cli):
|
def git_submodule(cli):
|
||||||
"""Git Submodule actions
|
"""Git Submodule actions
|
||||||
|
@ -29,7 +36,15 @@ def git_submodule(cli):
|
||||||
cli.run(['git', 'submodule', 'update', '--depth=50', '--init', name], capture_output=False)
|
cli.run(['git', 'submodule', 'update', '--depth=50', '--init', name], capture_output=False)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
for folder in REMOVE_DIRS:
|
# can be the default behavior with: qmk config git_submodule.force=True
|
||||||
|
remove_dirs = REMOVE_DIRS
|
||||||
|
if cli.config.git_submodule.force:
|
||||||
|
# Also trash everything that isnt marked as "safe"
|
||||||
|
for path in normpath('lib').iterdir():
|
||||||
|
if not any(ignore in path.as_posix() for ignore in IGNORE_DIRS):
|
||||||
|
remove_dirs.append(path)
|
||||||
|
|
||||||
|
for folder in map(normpath, remove_dirs):
|
||||||
if normpath(folder).is_dir():
|
if normpath(folder).is_dir():
|
||||||
print(f"Removing '{folder}'")
|
print(f"Removing '{folder}'")
|
||||||
shutil.rmtree(folder)
|
shutil.rmtree(folder)
|
||||||
|
|
Loading…
Reference in a new issue