Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b30a9766d | |||
| 982349a450 | |||
| 4d161c9ec4 | |||
| 047eb00594 | |||
| 558251860a | |||
| b685fe5d3f | |||
| e447fb4252 | |||
| 066a865084 | |||
| a1276f8d58 | |||
| 3555e34ae9 | |||
| b36cf144e3 | |||
| fb05b69adc | |||
| 4283c258d9 |
@@ -9,13 +9,12 @@ A program to help users work with [QMK Firmware](https://qmk.fm/).
|
||||
* Use `qmk clone` to pull down anyone's `qmk_firmware` fork
|
||||
* Setup your build environment with `qmk setup`
|
||||
* Check that your environment is correctly setup with `qmk doctor`
|
||||
* Integrates with your qmk_firmware for additional functionality:
|
||||
* `qmk c2json`
|
||||
* Integrates with qmk_firmware for additional functionality:
|
||||
* `qmk compile`
|
||||
* `qmk console`
|
||||
* `qmk flash`
|
||||
* `qmk json2c`
|
||||
* `qmk lint`
|
||||
* `qmk new-keymap`
|
||||
* ...and many more!
|
||||
|
||||
# Quickstart
|
||||
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
"""A program to help you work with qmk_firmware."""
|
||||
|
||||
__version__ = '0.0.46'
|
||||
__version__ = '0.0.51'
|
||||
|
||||
@@ -26,60 +26,6 @@ def is_qmk_firmware(qmk_firmware):
|
||||
return True
|
||||
|
||||
|
||||
def broken_module_imports():
|
||||
"""Make sure we can import all the python modules.
|
||||
"""
|
||||
broken_modules = find_broken_requirements('requirements.txt')
|
||||
broken_dev_modules = find_broken_requirements('requirements-dev.txt') if cli.config.user.developer else []
|
||||
to_return = [False, False]
|
||||
|
||||
if broken_modules:
|
||||
to_return[0] = True
|
||||
|
||||
if broken_dev_modules:
|
||||
to_return[1] = True
|
||||
|
||||
for module in broken_modules + broken_dev_modules:
|
||||
print('Could not find module %s!' % module)
|
||||
|
||||
return to_return
|
||||
|
||||
|
||||
def find_broken_requirements(requirements):
|
||||
""" Check if the modules in the given requirements.txt are available.
|
||||
|
||||
Args:
|
||||
|
||||
requirements
|
||||
The path to a requirements.txt file
|
||||
|
||||
Returns a list of modules that couldn't be imported
|
||||
"""
|
||||
with Path(requirements).open() as fd:
|
||||
broken_modules = []
|
||||
|
||||
for line in fd.readlines():
|
||||
line = line.strip().replace('<', '=').replace('>', '=')
|
||||
|
||||
if len(line) == 0 or line[0] == '#' or line.startswith('-r'):
|
||||
continue
|
||||
|
||||
if '#' in line:
|
||||
line = line.split('#')[0]
|
||||
|
||||
module_name = line.split('=')[0] if '=' in line else line
|
||||
module_import_name = module_name.replace('-', '_')
|
||||
|
||||
# Not every module is importable by its own name.
|
||||
if module_name == "pep8-naming":
|
||||
module_import_name = "pep8ext_naming"
|
||||
|
||||
if not find_spec(module_import_name):
|
||||
broken_modules.append(module_name)
|
||||
|
||||
return broken_modules
|
||||
|
||||
|
||||
@lru_cache(maxsize=2)
|
||||
def find_qmk_firmware():
|
||||
"""Look for qmk_firmware in the usual places.
|
||||
|
||||
+7
-30
@@ -11,13 +11,17 @@ from platform import platform
|
||||
from traceback import print_exc
|
||||
|
||||
import milc
|
||||
import milc.subcommand.config # noqa
|
||||
from milc.questions import yesno
|
||||
|
||||
from .helpers import broken_module_imports, find_qmk_firmware, is_qmk_firmware
|
||||
from . import __version__
|
||||
from .helpers import find_qmk_firmware, is_qmk_firmware
|
||||
|
||||
milc.set_metadata(version=__version__)
|
||||
milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
|
||||
|
||||
# These must happen after the milc.set_metadata() call
|
||||
import milc.subcommand.config # noqa, must come after milc.set_metadata()
|
||||
from milc.questions import yesno
|
||||
|
||||
|
||||
@milc.cli.entrypoint('CLI wrapper for running QMK commands.')
|
||||
def qmk_main(cli):
|
||||
@@ -56,8 +60,6 @@ def main():
|
||||
exit(1)
|
||||
|
||||
# Environment setup
|
||||
import qmk_cli
|
||||
milc.cli.version = qmk_cli.__version__
|
||||
qmk_firmware = find_qmk_firmware()
|
||||
os.environ['QMK_HOME'] = str(qmk_firmware)
|
||||
os.environ['ORIG_CWD'] = os.getcwd()
|
||||
@@ -68,31 +70,6 @@ def main():
|
||||
if is_qmk_firmware(qmk_firmware):
|
||||
# All subcommands are run relative to the qmk_firmware root to make it easier to use the right copy of qmk_firmware.
|
||||
os.chdir(str(qmk_firmware))
|
||||
|
||||
# Check to make sure we have all the requirements
|
||||
broken_modules, broken_dev_modules = broken_module_imports()
|
||||
msg_install = 'Please run `python3 -m pip install -r %s` to install required python dependencies.'
|
||||
|
||||
if broken_modules:
|
||||
if yesno('Would you like to install the required Python modules?'):
|
||||
run_cmd(sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt')
|
||||
else:
|
||||
print()
|
||||
print(msg_install % (os.environ['QMK_HOME'] + '/requirements.txt',))
|
||||
print()
|
||||
exit(1)
|
||||
|
||||
if broken_dev_modules:
|
||||
if yesno('Would you like to install the required developer Python modules?'):
|
||||
run_cmd(sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt')
|
||||
else:
|
||||
print()
|
||||
print(msg_install % (os.environ['QMK_HOME'] + '/requirements-dev.txt',))
|
||||
print('You can also turn off developer mode: qmk config user.developer=None')
|
||||
print()
|
||||
exit(1)
|
||||
|
||||
# Environment looks good, include the qmk_firmware subcommands
|
||||
sys.path.append(str(qmk_firmware / 'lib/python'))
|
||||
|
||||
try:
|
||||
|
||||
@@ -87,10 +87,13 @@ def setup(cli):
|
||||
# Offer to set `user.qmk_home` for them.
|
||||
if str(cli.args.home) != os.environ['QMK_HOME'] and yesno(home_prompt):
|
||||
cli.config['user']['qmk_home'] = str(cli.args.home.absolute())
|
||||
cli.config_source['user']['qmk_home'] = 'config_file'
|
||||
cli.write_config_option('user', 'qmk_home')
|
||||
|
||||
# Run `qmk doctor` to check the rest of the environment out
|
||||
doctor_command = [sys.argv[0], 'doctor']
|
||||
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('--no')
|
||||
|
||||
@@ -3,30 +3,5 @@
|
||||
#
|
||||
# Required packages: pip3 install bumpversion twine
|
||||
|
||||
set -e
|
||||
set -x
|
||||
|
||||
PYPI_USERNAME=${PYPI_USERNAME:=skully}
|
||||
FLIT_USERNAME=$PYPI_USERNAME
|
||||
TWINE_USERNAME=$PYPI_USERNAME
|
||||
|
||||
export FLIT_USERNAME TWINE_USERNAME
|
||||
|
||||
if ! bumpversion -h &> /dev/null; then
|
||||
echo "Missing bumpversion! Please run: pip3 install -U -r requirements-dev.txt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! twine -h &> /dev/null; then
|
||||
echo "Missing twine! Please run: pip3 install -U -r requirements-dev.txt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Bump the version, tag, and push
|
||||
rm -f dist/*
|
||||
bumpversion patch
|
||||
git push origin master --tags
|
||||
|
||||
# Build and upload
|
||||
python3 setup.py sdist bdist_wheel
|
||||
twine upload dist/qmk-*
|
||||
echo "Use the github action instead!"
|
||||
exit 1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[bumpversion]
|
||||
current_version = 0.0.46
|
||||
current_version = 0.0.51
|
||||
commit = True
|
||||
tag = True
|
||||
tag_name = {new_version}
|
||||
|
||||
Reference in New Issue
Block a user