Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b5e8aa4cac | |||
| 1c6d81fc3b | |||
| 0ffae74377 | |||
| cbe3ad0248 | |||
| 97689b53d7 | |||
| 054e071787 | |||
| 78e0fda2f0 | |||
| 9c6123483b | |||
| e851c8fcb5 | |||
| 92168e1ef0 | |||
| fd744ac24c | |||
| 840c791cc8 | |||
| 8f5b8e83c0 | |||
| 1da98510d3 |
@@ -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/*
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
# QMK CLI
|
# QMK CLI
|
||||||
[](https://github.com/qmk/qmk_cli/actions?query=workflow%3A%22CLI+Setup%22)
|
[](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,17 @@ 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 your qmk_firmware for additional functionality:
|
||||||
* `qmk compile-json`
|
* `qmk c2json`
|
||||||
* More to come
|
* `qmk compile`
|
||||||
|
* `qmk flash`
|
||||||
|
* `qmk json2c`
|
||||||
|
* `qmk lint`
|
||||||
|
* `qmk new-keymap`
|
||||||
|
|
||||||
# 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
@@ -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.41'
|
__version__ = '0.0.46'
|
||||||
|
|||||||
+19
-3
@@ -8,6 +8,24 @@ from pathlib import Path
|
|||||||
from milc import cli
|
from milc import cli
|
||||||
|
|
||||||
|
|
||||||
|
def is_qmk_firmware(qmk_firmware):
|
||||||
|
"""Returns True if the given Path() is a qmk_firmware clone.
|
||||||
|
"""
|
||||||
|
paths = [
|
||||||
|
qmk_firmware,
|
||||||
|
qmk_firmware / 'quantum',
|
||||||
|
qmk_firmware / 'requirements.txt',
|
||||||
|
qmk_firmware / 'requirements-dev.txt',
|
||||||
|
qmk_firmware / 'lib/python/qmk/cli/doctor.py'
|
||||||
|
]
|
||||||
|
|
||||||
|
for path in paths:
|
||||||
|
if not path.exists():
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def broken_module_imports():
|
def broken_module_imports():
|
||||||
"""Make sure we can import all the python modules.
|
"""Make sure we can import all the python modules.
|
||||||
"""
|
"""
|
||||||
@@ -88,9 +106,7 @@ def in_qmk_firmware():
|
|||||||
"""
|
"""
|
||||||
cur_dir = Path.cwd()
|
cur_dir = Path.cwd()
|
||||||
while len(cur_dir.parents) > 0:
|
while len(cur_dir.parents) > 0:
|
||||||
found_lib = cur_dir / 'lib/python/qmk/cli/__init__.py'
|
if is_qmk_firmware(cur_dir):
|
||||||
found_quantum = cur_dir / 'quantum'
|
|
||||||
if found_lib.is_file() and found_quantum.is_dir():
|
|
||||||
return cur_dir
|
return cur_dir
|
||||||
|
|
||||||
# Move up a directory before the next iteration
|
# Move up a directory before the next iteration
|
||||||
|
|||||||
@@ -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
|
from .helpers import broken_module_imports, find_qmk_firmware, is_qmk_firmware
|
||||||
|
|
||||||
milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
|
milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ def main():
|
|||||||
import qmk_cli.subcommands
|
import qmk_cli.subcommands
|
||||||
|
|
||||||
# Check out and initialize the qmk_firmware environment
|
# Check out and initialize the qmk_firmware environment
|
||||||
if qmk_firmware.exists():
|
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))
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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}"')
|
||||||
@@ -9,6 +9,7 @@ from pathlib import Path
|
|||||||
from milc import cli
|
from milc import cli
|
||||||
from milc.questions import yesno
|
from milc.questions import yesno
|
||||||
from qmk_cli.git import git_clone
|
from qmk_cli.git import git_clone
|
||||||
|
from qmk_cli.helpers import is_qmk_firmware
|
||||||
|
|
||||||
default_base = 'https://github.com'
|
default_base = 'https://github.com'
|
||||||
default_repo = 'qmk_firmware'
|
default_repo = 'qmk_firmware'
|
||||||
@@ -42,24 +43,6 @@ def git_upstream(destination):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def is_qmk_firmware(qmk_firmware):
|
|
||||||
"""Returns True if the given Path() is a qmk_firmware clone.
|
|
||||||
"""
|
|
||||||
paths = [
|
|
||||||
qmk_firmware,
|
|
||||||
qmk_firmware / 'Makefile',
|
|
||||||
qmk_firmware / 'requirements.txt',
|
|
||||||
qmk_firmware / 'requirements-dev.txt',
|
|
||||||
qmk_firmware / 'lib/python/qmk/cli/doctor.py'
|
|
||||||
]
|
|
||||||
|
|
||||||
for path in paths:
|
|
||||||
if not path.exists():
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
@cli.argument('-n', '--no', arg_only=True, action='store_true', help='Answer no to all questions')
|
@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('-y', '--yes', arg_only=True, action='store_true', help='Answer yes to all questions')
|
||||||
@cli.argument('--baseurl', default=default_base, help='The URL all git operations start from. Default: %s' % default_base)
|
@cli.argument('--baseurl', default=default_base, help='The URL all git operations start from. Default: %s' % default_base)
|
||||||
@@ -107,7 +90,7 @@ 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']
|
doctor_command = [sys.argv[0], 'doctor']
|
||||||
|
|
||||||
if cli.args.no:
|
if cli.args.no:
|
||||||
doctor_command.append('--no')
|
doctor_command.append('--no')
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[bumpversion]
|
[bumpversion]
|
||||||
current_version = 0.0.41
|
current_version = 0.0.46
|
||||||
commit = True
|
commit = True
|
||||||
tag = True
|
tag = True
|
||||||
tag_name = {new_version}
|
tag_name = {new_version}
|
||||||
|
|||||||
@@ -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"
|
||||||
],
|
]
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user