mirror of
https://github.com/qmk/qmk_cli.git
synced 2026-07-25 16:42:55 -04:00
71 lines
3.0 KiB
Python
71 lines
3.0 KiB
Python
"""Setup qmk_userspace on your computer.
|
|
"""
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
from platformdirs import user_data_dir
|
|
|
|
from milc import cli
|
|
|
|
from milc.questions import yesno
|
|
from qmk_cli.git import git_clone
|
|
from qmk_cli.helpers import find_qmk_firmware, is_qmk_firmware, is_qmk_userspace
|
|
|
|
default_base = 'https://github.com'
|
|
default_fork = 'qmk/qmk_userspace'
|
|
default_branch = 'main'
|
|
|
|
|
|
@cli.argument('-n', '--no', arg_only=True, action='store_true', help='Answer no to all questions')
|
|
@cli.argument('-y', '--yes', arg_only=True, action='store_true', help='Answer yes to all questions')
|
|
@cli.argument('--baseurl', arg_only=True, default=default_base, help='The URL all git operations start from. Default: %s' % default_base)
|
|
@cli.argument('-b', '--branch', arg_only=True, default=default_branch, help='The branch to clone. Default: %s' % default_branch)
|
|
@cli.argument('-H', '--home', arg_only=True, default=Path(os.environ['QMK_USERSPACE']), type=Path, help='The location for qmk_userspace. Default: %s' % os.environ['QMK_HOME'])
|
|
@cli.argument('fork', arg_only=True, default=default_fork, nargs='?', help='The qmk_userspace fork to clone. Default: %s' % default_fork)
|
|
@cli.subcommand('Setup your computer for qmk_userspace.')
|
|
def userspace_setup(cli):
|
|
"""Guide the user through setting up their QMK environment.
|
|
"""
|
|
# Sanity checks
|
|
if cli.args.yes and cli.args.no:
|
|
cli.log.error("Can't use both --yes and --no at the same time.")
|
|
exit(1)
|
|
|
|
if is_qmk_userspace(cli.args.home):
|
|
cli.log.info(f'Found qmk_userspace at {cli.args.home}.')
|
|
else:
|
|
cli.log.error('Could not find qmk_userspace!')
|
|
if yesno('Would you like to clone qmk_userspace?'):
|
|
git_url = f'{cli.args.baseurl}/{cli.args.fork}'
|
|
if not git_clone(git_url, cli.args.home, cli.args.branch):
|
|
exit(1)
|
|
else:
|
|
cli.log.warning('Not cloning qmk_userspace due to user input or --no flag.')
|
|
|
|
qmk_firmware = find_qmk_firmware()
|
|
if is_qmk_firmware(qmk_firmware):
|
|
cli.log.info(f'Found qmk_firmware at {qmk_firmware}.')
|
|
else:
|
|
cli.log.error('Could not find qmk_firmware!')
|
|
if yesno('Would you like to clone qmk_firmware?'):
|
|
git_url = f'{cli.args.baseurl}/qmk/qmk_firmware'
|
|
hidden_home = Path(user_data_dir('qmk_cli', 'QMK')) / 'qmk_firmware'
|
|
if not git_clone(git_url, hidden_home, 'master'):
|
|
exit(1)
|
|
else:
|
|
cli.log.warning('Not cloning qmk_firmware due to user input or --no flag.')
|
|
|
|
# Run `qmk doctor` to check the rest of the environment out
|
|
if cli.args.home.exists():
|
|
color = '--color' if cli.config.general.color else '--no-color'
|
|
unicode = '--unicode' if cli.config.general.unicode else '--no-unicode'
|
|
doctor_command = [Path(sys.argv[0]).as_posix(), color, unicode, 'doctor']
|
|
|
|
if cli.args.no:
|
|
doctor_command.append('-n')
|
|
|
|
if cli.args.yes:
|
|
doctor_command.append('-y')
|
|
|
|
cli.run(doctor_command, stdin=None, capture_output=False, cwd=cli.args.home)
|