Compare commits

..

17 Commits

Author SHA1 Message Date
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
QMK Bot 78e0fda2f0 New release: 0.0.44 → 0.0.45 2021-03-28 23:43:02 +00:00
Zach White 9c6123483b housekeeping 2021-03-28 16:23:15 -07:00
QMK Bot e851c8fcb5 New release: 0.0.43 → 0.0.44 2021-03-28 01:51:59 +00:00
QMK Bot 92168e1ef0 New release: 0.0.42 → 0.0.43 2021-03-28 01:41:34 +00:00
Zach White fd744ac24c Setup an action to publish a release 2021-03-27 18:38:47 -07:00
Zach White 840c791cc8 don't use sys.executable when running qmk doctor 2021-03-27 17:02:04 -07:00
10 changed files with 98 additions and 93 deletions
+47
View File
@@ -0,0 +1,47 @@
# This workflow will upload a Python Package using Twine when a release is created
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
name: Upload Python Package
on:
workflow_dispatch:
inputs:
version_part:
description: 'Which part of the version to increment (patch, minor, major)'
required: true
default: 'patch'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.7'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel
pip install -r requirements-dev.txt
- name: Bump version
run: |
git config --local user.email "hello@qmk.fm"
git config --local user.name "QMK Bot"
bumpversion ${{ github.event.inputs.version_part }}
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: master
tags: true
- name: Build and publish
env:
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
python setup.py sdist bdist_wheel
twine upload dist/*
+9 -7
View File
@@ -1,5 +1,6 @@
# QMK CLI # QMK CLI
[![CLI Setup](https://github.com/qmk/qmk_cli/workflows/CLI%20Setup/badge.svg)](https://github.com/qmk/qmk_cli/actions?query=workflow%3A%22CLI+Setup%22) [![CLI Setup](https://github.com/qmk/qmk_cli/workflows/CLI%20Setup/badge.svg)](https://github.com/qmk/qmk_cli/actions?query=workflow%3A%22CLI+Setup%22)
A program to help users work with [QMK Firmware](https://qmk.fm/). A program to help users work with [QMK Firmware](https://qmk.fm/).
# Features # Features
@@ -8,15 +9,16 @@ 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`
* Dispatches to `qmk_firmware/bin/qmk` for additional functionality: * Integrates with qmk_firmware for additional functionality:
* `qmk compile-json` * `qmk compile`
* More to come * `qmk console`
* `qmk flash`
* `qmk lint`
* ...and many more!
# Quickstart # Quickstart
Full documentation: <https://docs.qmk.fm/#/tutorial>
Basic steps:
* `python3 -m pip install qmk` * `python3 -m pip install qmk`
* `qmk setup` * `qmk setup`
Full documentation: <https://docs.qmk.fm/#/tutorial>
+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.42' __version__ = '0.0.48'
-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.
+1 -26
View File
@@ -14,7 +14,7 @@ import milc
import milc.subcommand.config # noqa import milc.subcommand.config # noqa
from milc.questions import yesno from milc.questions import yesno
from .helpers import broken_module_imports, find_qmk_firmware, is_qmk_firmware from .helpers import find_qmk_firmware, is_qmk_firmware
milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}' milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
@@ -68,31 +68,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}"')
+3 -1
View File
@@ -90,7 +90,9 @@ def setup(cli):
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.executable, 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 = [sys.argv[0], color, unicode, 'doctor']
if cli.args.no: if cli.args.no:
doctor_command.append('--no') doctor_command.append('--no')
+1 -1
View File
@@ -1,5 +1,5 @@
[bumpversion] [bumpversion]
current_version = 0.0.42 current_version = 0.0.48
commit = True commit = True
tag = True tag = True
tag_name = {new_version} tag_name = {new_version}
+5 -3
View File
@@ -24,7 +24,7 @@ if __name__ == "__main__":
long_description=long_description, long_description=long_description,
long_description_content_type="text/markdown", long_description_content_type="text/markdown",
packages=find_packages(), packages=find_packages(),
py_modules=['milc'], py_modules=['qmk_cli'],
classifiers=[ classifiers=[
'Development Status :: 3 - Alpha', 'Development Status :: 3 - Alpha',
'Environment :: Console', 'Environment :: Console',
@@ -45,11 +45,13 @@ if __name__ == "__main__":
"colorama", "colorama",
"dotty-dict", "dotty-dict",
"flake8", "flake8",
"hid",
"hjson", "hjson",
"jsonschema>=3", "jsonschema>=3",
"milc>=1.0.8", "milc>=1.3.0",
"nose2", "nose2",
"pygments", "pygments",
"pyusb",
"yapf" "yapf"
], ]
) )