Compare commits

...

19 Commits

Author SHA1 Message Date
QMK Bot 8b30a9766d New release: 0.0.50 → 0.0.51 2021-05-27 02:16:09 +00:00
Zach White 982349a450 move the yesno import to after the set_metadata call 2021-05-26 19:00:16 -07:00
Zach White 4d161c9ec4 fix qmk config 2021-05-26 17:55:15 -07:00
QMK Bot 047eb00594 New release: 0.0.49 → 0.0.50 2021-05-26 17:13:15 +00:00
Ryan 558251860a Updates for milc 1.4.0 (#52)
* Updates for milc 1.4.0

* Add halo dependency

* Just set version for now; remove halo as milc 1.4.1 should pull that in

* Bump milc

* Remove appdirs, argcomplete and colorama as they are also pulled in by MILC
2021-05-26 10:07:13 -07:00
QMK Bot b685fe5d3f New release: 0.0.48 → 0.0.49 2021-05-25 06:16:01 +00:00
Zach White e447fb4252 mark user.qmk_home as a config_file option (#53) 2021-05-24 23:15:13 -07:00
Zach White 066a865084 remove the release script 2021-05-10 12:42:11 -07:00
QMK Bot a1276f8d58 New release: 0.0.47 → 0.0.48 2021-05-10 19:40:17 +00:00
Zach White 3555e34ae9 New release: 0.0.46 → 0.0.47 2021-05-10 12:39:08 -07:00
Zach White b36cf144e3 Pass color and unicode settings down to qmk doctor
fixes #50
2021-05-10 12:28:37 -07:00
Zach White fb05b69adc update README 2021-05-10 12:24:05 -07:00
Zach White 4283c258d9 remove the module checking code in favor of qmk_firmware doing that directly 2021-05-10 12:22:44 -07:00
Zach White b5e8aa4cac New release: 0.0.45 → 0.0.46 2021-05-08 21:04:06 -07:00
Zach White 1c6d81fc3b add hid and pyusb to the requirements 2021-05-08 21:03:31 -07:00
Erovia 0ffae74377 Merge pull request #49 from zvecr/env_command 2021-05-08 13:00:46 +02:00
zvecr cbe3ad0248 Expose is_qmk_firmware status 2021-04-08 23:41:12 +01:00
zvecr 97689b53d7 Add cli.config.general 2021-04-05 21:29:56 +01:00
zvecr 054e071787 Add env subcommand 2021-04-05 21:01:29 +01:00
10 changed files with 52 additions and 122 deletions
+3 -4
View File
@@ -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 * Use `qmk clone` to pull down anyone's `qmk_firmware` fork
* Setup your build environment with `qmk setup` * Setup your build environment with `qmk setup`
* Check that your environment is correctly setup with `qmk doctor` * Check that your environment is correctly setup with `qmk doctor`
* Integrates with your qmk_firmware for additional functionality: * Integrates with qmk_firmware for additional functionality:
* `qmk c2json`
* `qmk compile` * `qmk compile`
* `qmk console`
* `qmk flash` * `qmk flash`
* `qmk json2c`
* `qmk lint` * `qmk lint`
* `qmk new-keymap` * ...and many more!
# Quickstart # Quickstart
+1 -1
View File
@@ -1,3 +1,3 @@
"""A program to help you work with qmk_firmware.""" """A program to help you work with qmk_firmware."""
__version__ = '0.0.45' __version__ = '0.0.51'
-54
View File
@@ -26,60 +26,6 @@ def is_qmk_firmware(qmk_firmware):
return True 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) @lru_cache(maxsize=2)
def find_qmk_firmware(): def find_qmk_firmware():
"""Look for qmk_firmware in the usual places. """Look for qmk_firmware in the usual places.
+7 -30
View File
@@ -11,13 +11,17 @@ from platform import platform
from traceback import print_exc from traceback import print_exc
import milc 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}' 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.') @milc.cli.entrypoint('CLI wrapper for running QMK commands.')
def qmk_main(cli): def qmk_main(cli):
@@ -56,8 +60,6 @@ def main():
exit(1) exit(1)
# Environment setup # Environment setup
import qmk_cli
milc.cli.version = qmk_cli.__version__
qmk_firmware = find_qmk_firmware() qmk_firmware = find_qmk_firmware()
os.environ['QMK_HOME'] = str(qmk_firmware) os.environ['QMK_HOME'] = str(qmk_firmware)
os.environ['ORIG_CWD'] = os.getcwd() os.environ['ORIG_CWD'] = os.getcwd()
@@ -68,31 +70,6 @@ def main():
if is_qmk_firmware(qmk_firmware): 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. # 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)) 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')) sys.path.append(str(qmk_firmware / 'lib/python'))
try: try:
+1
View File
@@ -3,4 +3,5 @@
We list each subcommand here explicitly because all the reliable ways of searching for modules are slow and delay startup. We list each subcommand here explicitly because all the reliable ways of searching for modules are slow and delay startup.
""" """
from . import clone # noqa from . import clone # noqa
from . import env # noqa
from . import setup # noqa from . import setup # noqa
+30
View File
@@ -0,0 +1,30 @@
"""Prints environment information.
"""
import os
from pathlib import Path
from milc import cli
from qmk_cli.helpers import is_qmk_firmware
@cli.argument('var', default=None, nargs='?', help='Optional variable to query')
@cli.subcommand('Prints environment information.')
def env(cli):
home = os.environ.get('QMK_HOME', "")
data = {
'QMK_HOME': home,
'QMK_FIRMWARE': home if is_qmk_firmware(Path(home)) else ""
}
# Now munge the current cli config
for key, val in cli.config.general.items():
converted_key = 'QMK_' + key.upper()
data[converted_key] = val
if cli.args.var:
# dump out requested arg
print(data[cli.args.var])
else:
# dump out everything
for key, val in data.items():
print(f'{key}="{val}"')
+4 -1
View File
@@ -87,10 +87,13 @@ def setup(cli):
# Offer to set `user.qmk_home` for them. # Offer to set `user.qmk_home` for them.
if str(cli.args.home) != os.environ['QMK_HOME'] and yesno(home_prompt): 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['user']['qmk_home'] = str(cli.args.home.absolute())
cli.config_source['user']['qmk_home'] = 'config_file'
cli.write_config_option('user', 'qmk_home') cli.write_config_option('user', 'qmk_home')
# Run `qmk doctor` to check the rest of the environment out # 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: if cli.args.no:
doctor_command.append('--no') doctor_command.append('--no')
+2 -27
View File
@@ -3,30 +3,5 @@
# #
# Required packages: pip3 install bumpversion twine # Required packages: pip3 install bumpversion twine
set -e echo "Use the github action instead!"
set -x exit 1
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-*
+1 -1
View File
@@ -1,5 +1,5 @@
[bumpversion] [bumpversion]
current_version = 0.0.45 current_version = 0.0.51
commit = True commit = True
tag = True tag = True
tag_name = {new_version} tag_name = {new_version}
+3 -4
View File
@@ -40,16 +40,15 @@ if __name__ == "__main__":
], ],
python_requires=metadata['requires-python'], python_requires=metadata['requires-python'],
install_requires=[ install_requires=[
"appdirs",
"argcomplete",
"colorama",
"dotty-dict", "dotty-dict",
"flake8", "flake8",
"hid",
"hjson", "hjson",
"jsonschema>=3", "jsonschema>=3",
"milc>=1.3.0", "milc>=1.4.0",
"nose2", "nose2",
"pygments", "pygments",
"pyusb",
"yapf" "yapf"
] ]
) )