Compare commits

...

58 Commits

Author SHA1 Message Date
QMK Bot 42fcfc3930 New release: 0.3.1 → 0.3.2 2021-08-12 17:22:35 +00:00
Zach White 60f2bb743d Move bumpversion config to .bumpversion.cfg
It seems that bumpversion only bumps the first match in a file,
with no way I can find to get around that. This works around the
problem so that bumpversion works in our setup.py-less world.
2021-08-12 10:18:13 -07:00
Zach White f8902bd258 fix setup.cfg version 2021-08-12 10:12:58 -07:00
QMK Bot f7125127f1 New release: 0.3.0 → 0.3.1 2021-08-12 17:05:55 +00:00
Zach White f8fe363999 Modernize the qmk_cli package (#91)
* bring our package into the future

* trigger the OS packages upon a successful build

* fix windows

* trim deps

* remove the qmk_cli module from setup
2021-08-12 09:53:28 -07:00
QMK Bot bbd667e30c New release: 0.2.2 → 0.3.0 2021-08-11 02:54:39 +00:00
dependabot[bot] 32506bf1bb Bump milc from 1.4.2 to 1.5.0 (#90)
Bumps [milc](https://github.com/clueboard/milc) from 1.4.2 to 1.5.0.
- [Release notes](https://github.com/clueboard/milc/releases)
- [Commits](https://github.com/clueboard/milc/compare/1.4.2...1.5.0)

---
updated-dependencies:
- dependency-name: milc
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-10 19:46:28 -07:00
Zach White 45a231af0c Add qmk console to the global cli (#84)
* add qmk console to the global cli

* lazy load hid and usb.core

* lazy load hid and usb.core
2021-08-10 11:25:00 -07:00
dependabot[bot] 1f7ad8a73e Bump bleach from 3.3.1 to 4.0.0 (#88)
Bumps [bleach](https://github.com/mozilla/bleach) from 3.3.1 to 4.0.0.
- [Release notes](https://github.com/mozilla/bleach/releases)
- [Changelog](https://github.com/mozilla/bleach/blob/main/CHANGES)
- [Commits](https://github.com/mozilla/bleach/compare/v3.3.1...v4.0.0)

---
updated-dependencies:
- dependency-name: bleach
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-04 11:22:09 -07:00
dependabot[bot] 2faca28631 Bump jeepney from 0.7.0 to 0.7.1 (#85)
Bumps [jeepney](https://gitlab.com/takluyver/jeepney) from 0.7.0 to 0.7.1.
- [Release notes](https://gitlab.com/takluyver/jeepney/tags)
- [Commits](https://gitlab.com/takluyver/jeepney/compare/0.7...0.7.1)

---
updated-dependencies:
- dependency-name: jeepney
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-04 10:25:54 -07:00
dependabot[bot] d99eed2ed0 Bump tqdm from 4.61.2 to 4.62.0 (#86)
Bumps [tqdm](https://github.com/tqdm/tqdm) from 4.61.2 to 4.62.0.
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.61.2...v4.62.0)

---
updated-dependencies:
- dependency-name: tqdm
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-04 10:23:20 -07:00
dependabot[bot] a5a481e322 Bump importlib-metadata from 4.6.1 to 4.6.3 (#87)
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 4.6.1 to 4.6.3.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/CHANGES.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v4.6.1...v4.6.3)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-04 10:23:07 -07:00
dependabot[bot] 21daea7028 Bump twine from 3.4.1 to 3.4.2 (#83)
Bumps [twine](https://github.com/pypa/twine) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/pypa/twine/releases)
- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/twine/compare/3.4.1...3.4.2)

---
updated-dependencies:
- dependency-name: twine
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-20 11:03:44 -07:00
QMK Bot 51e80c2f52 New release: 0.2.1 → 0.2.2 2021-07-16 20:08:42 +00:00
Zach White 567ef9637e fix the docker build 2021-07-16 13:06:44 -07:00
QMK Bot e8818c9d23 New release: 0.2.0 → 0.2.1 2021-07-16 19:30:38 +00:00
Zach White 2710813c51 Switch to installing the locally built package (#80) 2021-07-15 21:39:39 -07:00
dependabot[bot] fb69e6d50a Bump requests from 2.25.1 to 2.26.0 (#79)
Bumps [requests](https://github.com/psf/requests) from 2.25.1 to 2.26.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/master/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.25.1...v2.26.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-15 21:39:10 -07:00
dependabot[bot] 135d9f63a1 Bump bleach from 3.3.0 to 3.3.1 (#81)
Bumps [bleach](https://github.com/mozilla/bleach) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/mozilla/bleach/releases)
- [Changelog](https://github.com/mozilla/bleach/blob/master/CHANGES)
- [Commits](https://github.com/mozilla/bleach/compare/v3.3.0...v3.3.1)

---
updated-dependencies:
- dependency-name: bleach
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-15 21:38:44 -07:00
dependabot[bot] 695cd7eb4d Bump jeepney from 0.6.0 to 0.7.0 (#78)
Bumps [jeepney](https://gitlab.com/takluyver/jeepney) from 0.6.0 to 0.7.0.
- [Release notes](https://gitlab.com/takluyver/jeepney/tags)
- [Commits](https://gitlab.com/takluyver/jeepney/compare/0.6...0.7)

---
updated-dependencies:
- dependency-name: jeepney
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-14 10:20:57 -07:00
QMK Bot 61ca025afd New release: 0.1.1 → 0.2.0 2021-07-11 16:30:21 +00:00
Zach White 2bd1630621 switch to the qmk-dotty-dict package (#77) 2021-07-11 09:22:22 -07:00
dependabot[bot] 34517d01b7 Bump cffi from 1.14.5 to 1.14.6 (#76)
Bumps [cffi](http://cffi.readthedocs.org) from 1.14.5 to 1.14.6.

---
updated-dependencies:
- dependency-name: cffi
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-10 08:21:45 -07:00
dependabot[bot] 0a4d66e13a Bump pyusb from 1.2.0 to 1.2.1 (#75)
Bumps [pyusb](https://github.com/pyusb/pyusb) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/pyusb/pyusb/releases)
- [Commits](https://github.com/pyusb/pyusb/compare/v1.2.0...v1.2.1)

---
updated-dependencies:
- dependency-name: pyusb
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-10 08:21:36 -07:00
dependabot[bot] fe0a3af05f Bump pkginfo from 1.7.0 to 1.7.1 (#74)
Bumps [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) from 1.7.0 to 1.7.1.

---
updated-dependencies:
- dependency-name: pkginfo
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-10 08:21:20 -07:00
QMK Bot 4508b8548f New release: 0.1.0 → 0.1.1 2021-07-09 02:54:33 +00:00
dependabot[bot] 2ea90a0893 Bump docker/build-push-action from 2.5.0 to 2.6.1 (#73)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2.5.0 to 2.6.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v2.5.0...v2.6.1)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-08 19:13:32 -07:00
Zach White 9fccc990be Add infrastructure to build and push docker containers (#64)
* add infrastructure to build and push docker containers

* make it part of the deploy workflow
2021-07-07 22:54:34 -07:00
Zach White 6d99eacdf8 switch windows back to the old method 2021-07-07 21:29:22 -07:00
Zach White dbd731585a switch the pip command 2021-07-07 21:19:59 -07:00
Zach White 9d480bd287 attempt to fix windows 2021-07-07 21:12:29 -07:00
Zach White 709f416e52 switch the gh-actions to use ci_tests 2021-07-07 20:14:04 -07:00
Zach White bcdac9a80e add a basic ci test to make testing easier 2021-07-07 20:00:39 -07:00
dependabot[bot] 4772e68828 Bump tqdm from 4.61.1 to 4.61.2 (#72)
Bumps [tqdm](https://github.com/tqdm/tqdm) from 4.61.1 to 4.61.2.
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.61.1...v4.61.2)

---
updated-dependencies:
- dependency-name: tqdm
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-07 19:29:43 -07:00
dependabot[bot] 24741c7d2b Bump pyrsistent from 0.17.3 to 0.18.0 (#66)
Bumps [pyrsistent](https://github.com/tobgu/pyrsistent) from 0.17.3 to 0.18.0.
- [Release notes](https://github.com/tobgu/pyrsistent/releases)
- [Changelog](https://github.com/tobgu/pyrsistent/blob/master/CHANGES.txt)
- [Commits](https://github.com/tobgu/pyrsistent/compare/v0.17.3...v0.18.0)

---
updated-dependencies:
- dependency-name: pyrsistent
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-07 19:28:51 -07:00
dependabot[bot] b756421528 Bump importlib-metadata from 4.5.0 to 4.6.1 (#68)
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 4.5.0 to 4.6.1.
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/CHANGES.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v4.5.0...v4.6.1)

---
updated-dependencies:
- dependency-name: importlib-metadata
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-07 19:28:21 -07:00
dependabot[bot] 3d96bcdc14 Bump pyusb from 1.1.1 to 1.2.0 (#69)
Bumps [pyusb](https://github.com/pyusb/pyusb) from 1.1.1 to 1.2.0.
- [Release notes](https://github.com/pyusb/pyusb/releases)
- [Commits](https://github.com/pyusb/pyusb/compare/v1.1.1...v1.2.0)

---
updated-dependencies:
- dependency-name: pyusb
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-07 19:27:50 -07:00
dependabot[bot] 6e6b6bcde6 Bump packaging from 20.9 to 21.0 (#70)
Bumps [packaging](https://github.com/pypa/packaging) from 20.9 to 21.0.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/20.9...21.0)

---
updated-dependencies:
- dependency-name: packaging
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-07 19:27:24 -07:00
dependabot[bot] 1df06eed72 Bump zipp from 3.4.1 to 3.5.0 (#71)
Bumps [zipp](https://github.com/jaraco/zipp) from 3.4.1 to 3.5.0.
- [Release notes](https://github.com/jaraco/zipp/releases)
- [Changelog](https://github.com/jaraco/zipp/blob/main/CHANGES.rst)
- [Commits](https://github.com/jaraco/zipp/compare/v3.4.1...v3.5.0)

---
updated-dependencies:
- dependency-name: zipp
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-07 19:27:04 -07:00
QMK Bot 60a56b6976 New release: 0.0.52 → 0.1.0 2021-06-26 16:31:53 +00:00
dependabot[bot] 1e3605feb3 Bump actions/setup-python from 1 to 2.2.2 (#58)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 1 to 2.2.2.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v1...v2.2.2)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-26 08:34:56 -07:00
dependabot[bot] 48ddcefea1 Bump actions/checkout from 1 to 2.3.4 (#57)
Bumps [actions/checkout](https://github.com/actions/checkout) from 1 to 2.3.4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v1...v2.3.4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-26 08:34:43 -07:00
Zach White 2f6f38cc33 Ensure that qmk doctor can be answered on windows (#63) 2021-06-25 18:55:51 -07:00
dependabot[bot] c73ae7e97c Bump urllib3 from 1.26.5 to 1.26.6 (#62)
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.5 to 1.26.6.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/1.26.6/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.5...1.26.6)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-25 15:23:58 -07:00
Zach White 0475193870 Create SECURITY.md 2021-06-23 20:27:04 -07:00
Zach White 8d9b3b2880 pin versions and use dependabot to update them (#56) 2021-06-23 19:28:31 -07:00
Zach White 0dbe3dc448 Setup codeql analysis 2021-06-23 10:29:23 -07:00
QMK Bot c41fd5e940 New release: 0.0.51 → 0.0.52 2021-06-22 05:21:24 +00:00
Zach White b70736a876 add vscode settings 2021-06-21 22:14:55 -07:00
Zach White 69b3b890d2 check for __init__ instead of doctor 2021-06-21 22:14:38 -07:00
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
22 changed files with 716 additions and 149 deletions
+12
View File
@@ -0,0 +1,12 @@
[bumpversion]
current_version = 0.3.2
commit = True
tag = True
tag_name = {new_version}
message = New release: {current_version} → {new_version}
[bumpversion:file:.bumpversion.cfg]
[bumpversion:file:qmk_cli/__init__.py]
[bumpversion:file:setup.cfg]
+15
View File
@@ -0,0 +1,15 @@
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions" # See documentation for possible values
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "pip" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "daily"
reviewers:
- "qmk/collaborators"
+9 -24
View File
@@ -17,27 +17,15 @@ jobs:
python-version: [3.7, 3.8, 3.9] python-version: [3.7, 3.8, 3.9]
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v2.3.4
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1 uses: actions/setup-python@v2.2.2
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
- name: Install Python dependencies - name: Run ci_tests
run: | run: ./ci_tests -a
python3 -m pip install wheel
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Install QMK CLI from source
run: |
python3 -m pip install -r requirements.txt
python3 setup.py sdist bdist_wheel
cd ..
python3 -m pip install --force-reinstall --no-index --no-deps --prefix=~/.local --find-links qmk_cli/dist qmk
- name: Run qmk setup -y
run: qmk setup -y
test_cli_win: test_cli_win:
runs-on: windows-latest runs-on: windows-latest
@@ -45,7 +33,7 @@ jobs:
QMK_HOME: $HOME/qmk_firmware QMK_HOME: $HOME/qmk_firmware
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v2.3.4
- name: (MSYS2) Setup and install dependencies - name: (MSYS2) Setup and install dependencies
uses: msys2/setup-msys2@v2 uses: msys2/setup-msys2@v2
@@ -56,16 +44,13 @@ jobs:
- name: (MSYS2) Install Python dependencies - name: (MSYS2) Install Python dependencies
shell: msys2 {0} shell: msys2 {0}
run: | run: |
python3 -m pip install wheel python3 -m pip install -U setuptools wheel
- name: (MSYS2) Install QMK CLI from source - name: (MSYS2) Install QMK CLI from source
shell: msys2 {0} shell: msys2 {0}
run: | run: |
python3 -m pip install -r requirements.txt python3 -m pip install -U build
python3 setup.py sdist bdist_wheel python3 -m build
cd .. python3 -m pip install dist/qmk-*.tar.gz
python3 -m pip install --force-reinstall --no-index --no-deps --find-links qmk_cli/dist qmk
- name: (MSYS2) Run qmk setup -y - name: (MSYS2) Run qmk setup -y
shell: msys2 {0} shell: msys2 {0}
run: qmk setup -y run: qmk setup -y
+71
View File
@@ -0,0 +1,71 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
schedule:
- cron: '22 18 * * 0'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'python' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2.3.4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
+22 -5
View File
@@ -17,14 +17,16 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2.3.4
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v2 uses: actions/setup-python@v2.2.2
with: with:
python-version: '3.7' python-version: '3.7'
- name: Run ci_tests
run: ./ci_tests
- name: Install dependencies - name: Install dependencies
run: | run: |
python -m pip install --upgrade pip python3 -m pip install --upgrade pip
pip install setuptools wheel pip install setuptools wheel
pip install -r requirements-dev.txt pip install -r requirements-dev.txt
- name: Bump version - name: Bump version
@@ -40,8 +42,23 @@ jobs:
tags: true tags: true
- name: Build and publish - name: Build and publish
env: env:
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} TWINE_USERNAME: qmk
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: | run: |
python setup.py sdist bdist_wheel python3 -m build
twine upload dist/* twine upload dist/*
- name: Log in to Docker Hub
uses: docker/login-action@v1.10.0
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Build and Push to Docker Hub
uses: docker/build-push-action@v2.6.1
with:
context: .
push: true
tags: qmkfm/qmk_cli:latest
- name: Trigger OS package builds
run: ./trigger_packages
env:
QMK_BOT_TOKEN: ${{ secrets.QMK_BOT_TOKEN }}
+3
View File
@@ -0,0 +1,3 @@
{
"python.formatting.provider": "yapf"
}
+13
View File
@@ -0,0 +1,13 @@
FROM qmkfm/base_container
# Copy package in
ADD dist /tmp/dist
# Install python packages
RUN python3 -m pip uninstall -y qmk || true
RUN python3 -m pip install --upgrade pip setuptools wheel nose2 && \
python3 -m pip install /tmp/dist/qmk-*.whl && \
rm -rf /tmp/dist
# Set the default location for qmk_firmware
ENV QMK_HOME /qmk_firmware
+2 -1
View File
@@ -8,10 +8,11 @@ A program to help users work with [QMK Firmware](https://qmk.fm/).
* Interact with your qmk_firmware tree from any location * Interact with your qmk_firmware tree from any location
* 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`
* Use `qmk console` to get debugging information from your keyboard(s)
* Check that your environment is correctly setup with `qmk doctor` * Check that your environment is correctly setup with `qmk doctor`
* Integrates with qmk_firmware for additional functionality: * Integrates with qmk_firmware for additional functionality:
* `qmk compile` * `qmk compile`
* `qmk console` * `qmk info`
* `qmk flash` * `qmk flash`
* `qmk lint` * `qmk lint`
* ...and many more! * ...and many more!
+14
View File
@@ -0,0 +1,14 @@
# Security Policy
## Supported Versions
Use this section to tell people about which versions of your project are
currently being supported with security updates.
| Version | Supported |
| ------- | ------------------ |
| 0.0.x | :white_check_mark: |
## Reporting a Vulnerability
* [Open an Issue](https://github.com/qmk/qmk_cli/issues/new?assignees=&labels=bug&template=bug_report.md&title=%5BBug%5D+)
Executable
+59
View File
@@ -0,0 +1,59 @@
#!/usr/bin/env bash
set -e
#set -x
ADVANCED=false
TMPDIR=$(mktemp -d)
QMK_HOME="$TMPDIR/qmk_firmware"
export QMK_HOME
for arg in $@; do
if [ "$arg" = "-a" ]; then
ADVANCED=true
fi
done
if [ $ADVANCED = true ]; then
echo "*** Running in advanced mode with tmp files in $TMPDIR"
else
echo "*** Running in basic mode with tmp files in $TMPDIR"
fi
# Setup our virtualenv
if [ -e .ci_venv ]; then
rm -rf .ci_venv
fi
python3 -m venv .ci_venv
source .ci_venv/bin/activate
# Install dependencies
python3 -m pip install -U pip wheel
python3 -m pip install .
python3 -m pip install -r requirements-dev.txt
# Ensure that qmk works
echo "*** Testing 'qmk clone -h'"
qmk clone -h
echo "*** Testing 'qmk config -a'"
qmk config -a
echo "*** Testing 'qmk setup -n'"
qmk setup -n
echo
echo "*** Basic tests completed successfully!"
# Run advanced test if requested
if [ $ADVANCED = true ]; then
echo
echo "*** Testing 'qmk setup -y'"
qmk setup -y
echo
echo "*** Advanced tests completed successfully!"
fi
# Cleanup
deactivate
rm -rf .ci_venv $TMPDIR
+6
View File
@@ -0,0 +1,6 @@
[build-system]
requires = [
"setuptools>=42",
"wheel"
]
build-backend = "setuptools.build_meta"
+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.48' __version__ = '0.3.2'
+1 -1
View File
@@ -16,7 +16,7 @@ def is_qmk_firmware(qmk_firmware):
qmk_firmware / 'quantum', qmk_firmware / 'quantum',
qmk_firmware / 'requirements.txt', qmk_firmware / 'requirements.txt',
qmk_firmware / 'requirements-dev.txt', qmk_firmware / 'requirements-dev.txt',
qmk_firmware / 'lib/python/qmk/cli/doctor.py' qmk_firmware / 'lib/python/qmk/cli/__init__.py'
] ]
for path in paths: for path in paths:
+6 -4
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 . import __version__
from .helpers import find_qmk_firmware, is_qmk_firmware 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()
+1
View File
@@ -3,5 +3,6 @@
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 console # noqa
from . import env # noqa from . import env # noqa
from . import setup # noqa from . import setup # noqa
+358
View File
@@ -0,0 +1,358 @@
"""Acquire debugging information from usb hid devices
cli implementation of https://www.pjrc.com/teensy/hid_listen.html
"""
from functools import lru_cache
from pathlib import Path
from platform import platform
from threading import Thread
from time import sleep, strftime
from milc import cli
from milc.questions import yesno
LOG_COLOR = {
'next': 0,
'colors': [
'{fg_blue}',
'{fg_cyan}',
'{fg_green}',
'{fg_magenta}',
'{fg_red}',
'{fg_yellow}',
],
}
KNOWN_BOOTLOADERS = {
# VID , PID
('03EB', '2FEF'): 'atmel-dfu: ATmega16U2',
('03EB', '2FF0'): 'atmel-dfu: ATmega32U2',
('03EB', '2FF3'): 'atmel-dfu: ATmega16U4',
('03EB', '2FF4'): 'atmel-dfu: ATmega32U4',
('03EB', '2FF9'): 'atmel-dfu: AT90USB64',
('03EB', '2FFA'): 'atmel-dfu: AT90USB162',
('03EB', '2FFB'): 'atmel-dfu: AT90USB128',
('03EB', '6124'): 'Microchip SAM-BA',
('0483', 'DF11'): 'stm32-dfu: STM32 BOOTLOADER',
('16C0', '05DC'): 'USBasp: USBaspLoader',
('16C0', '05DF'): 'bootloadHID: HIDBoot',
('16C0', '0478'): 'halfkay: Teensy Halfkay',
('1B4F', '9203'): 'caterina: Pro Micro 3.3V',
('1B4F', '9205'): 'caterina: Pro Micro 5V',
('1B4F', '9207'): 'caterina: LilyPadUSB',
('1C11', 'B007'): 'kiibohd: Kiibohd DFU Bootloader',
('1EAF', '0003'): 'stm32duino: Maple 003',
('1FFB', '0101'): 'caterina: Polou A-Star 32U4 Bootloader',
('2341', '0036'): 'caterina: Arduino Leonardo',
('2341', '0037'): 'caterina: Arduino Micro',
('239A', '000C'): 'caterina: Adafruit Feather 32U4',
('239A', '000D'): 'caterina: Adafruit ItsyBitsy 32U4 3v',
('239A', '000E'): 'caterina: Adafruit ItsyBitsy 32U4 5v',
('239A', '000E'): 'caterina: Adafruit ItsyBitsy 32U4 5v',
('2A03', '0036'): 'caterina: Arduino Leonardo',
('2A03', '0037'): 'caterina: Arduino Micro',
('314B', '0106'): 'apm32-dfu: APM32 DFU ISP Mode'
}
def install_deps():
"""Install the necessary dependencies for qmk console.
"""
this_platform = platform().lower()
if 'darwin' in this_platform or 'macos' in this_platform:
command = ['brew', 'install', 'hidapi']
elif 'linux' in this_platform:
command = ['sudo', 'apt', 'install', '-y', 'libhidapi-hidraw0', 'libusb-dev']
elif 'windows' in this_platform:
command = ['pacboy', 'sync', '--needed', '--noconfirm', '--disable-download-timeout', 'hidapi:x']
else:
cli.log.error('Unsupported platform: %s', this_platform)
if yesno("Would you like to run `%s` to install the necessary package?", ' '.join(command)):
cli.run(command, capture_output=False)
return True
@lru_cache(maxsize=0)
def import_usb_core():
"""Attempts to import the usb.core module.
"""
try:
import usb.core
return usb.core
except ImportError as e:
cli.log.error('Could not import usb.core: %s', e)
if install_deps():
return import_usb_core()
raise
def import_hid():
"""Attempts to import the hid module.
"""
try:
import hid
return hid
except ImportError as e:
cli.log.error('Could not import hid: %s', e)
if install_deps():
return import_hid()
raise
class MonitorDevice(object):
def __init__(self, hid_device, numeric):
self.hid = import_hid()
self.hid_device = hid_device
self.numeric = numeric
self.device = self.hid.Device(path=hid_device['path'])
self.current_line = ''
cli.log.info('Console Connected: %(color)s%(manufacturer_string)s %(product_string)s{style_reset_all} (%(color)s%(vendor_id)04X:%(product_id)04X:%(index)d{style_reset_all})', hid_device)
def read(self, size, encoding='ascii', timeout=1):
"""Read size bytes from the device.
"""
return self.device.read(size, timeout).decode(encoding)
def read_line(self):
"""Read from the device's console until we get a \n.
"""
while '\n' not in self.current_line:
self.current_line += self.read(32).replace('\x00', '')
lines = self.current_line.split('\n', 1)
self.current_line = lines[1]
return lines[0]
def run_forever(self):
while True:
try:
message = {**self.hid_device, 'text': self.read_line()}
identifier = (int2hex(message['vendor_id']), int2hex(message['product_id'])) if self.numeric else (message['manufacturer_string'], message['product_string'])
message['identifier'] = ':'.join(identifier)
message['ts'] = '{style_dim}{fg_green}%s{style_reset_all} ' % (strftime(cli.config.general.datetime_fmt),) if cli.args.timestamp else ''
cli.echo('%(ts)s%(color)s%(identifier)s:%(index)d{style_reset_all}: %(text)s' % message)
except self.hid.HIDException:
break
class FindDevices(object):
def __init__(self, vid, pid, index, numeric):
self.hid = import_hid()
self.vid = vid
self.pid = pid
self.index = index
self.numeric = numeric
def run_forever(self):
"""Process messages from our queue in a loop.
"""
live_devices = {}
live_bootloaders = {}
while True:
try:
for device in list(live_devices):
if not live_devices[device]['thread'].is_alive():
cli.log.info('Console Disconnected: %(color)s%(manufacturer_string)s %(product_string)s{style_reset_all} (%(color)s%(vendor_id)04X:%(product_id)04X:%(index)d{style_reset_all})', live_devices[device])
del live_devices[device]
for device in self.find_devices():
if device['path'] not in live_devices:
device['color'] = LOG_COLOR['colors'][LOG_COLOR['next']]
LOG_COLOR['next'] = (LOG_COLOR['next'] + 1) % len(LOG_COLOR['colors'])
live_devices[device['path']] = device
try:
monitor = MonitorDevice(device, self.numeric)
device['thread'] = Thread(target=monitor.run_forever, daemon=True)
device['thread'].start()
except Exception as e:
device['e'] = e
device['e_name'] = e.__class__.__name__
cli.log.error("Could not connect to %(color)s%(manufacturer_string)s %(product_string)s{style_reset_all} (%(color)s:%(vendor_id)04X:%(product_id)04X:%(index)d): %(e_name)s: %(e)s", device)
if cli.config.general.verbose:
cli.log.exception(e)
del live_devices[device['path']]
if cli.args.bootloaders:
for device in self.find_bootloaders():
if device.address in live_bootloaders:
live_bootloaders[device.address]._qmk_found = True
else:
name = KNOWN_BOOTLOADERS[(int2hex(device.idVendor), int2hex(device.idProduct))]
cli.log.info('Bootloader Connected: {style_bright}{fg_magenta}%s', name)
device._qmk_found = True
live_bootloaders[device.address] = device
for device in list(live_bootloaders):
if live_bootloaders[device]._qmk_found:
live_bootloaders[device]._qmk_found = False
else:
name = KNOWN_BOOTLOADERS[(int2hex(live_bootloaders[device].idVendor), int2hex(live_bootloaders[device].idProduct))]
cli.log.info('Bootloader Disconnected: {style_bright}{fg_magenta}%s', name)
del live_bootloaders[device]
sleep(.1)
except KeyboardInterrupt:
break
def is_bootloader(self, hid_device):
"""Returns true if the device in question matches a known bootloader vid/pid.
"""
return (int2hex(hid_device.idVendor), int2hex(hid_device.idProduct)) in KNOWN_BOOTLOADERS
def is_console_hid(self, hid_device):
"""Returns true when the usage page indicates it's a teensy-style console.
"""
return hid_device['usage_page'] == 0xFF31 and hid_device['usage'] == 0x0074
def is_filtered_device(self, hid_device):
"""Returns True if the device should be included in the list of available consoles.
"""
return int2hex(hid_device['vendor_id']) == self.vid and int2hex(hid_device['product_id']) == self.pid
def find_devices_by_report(self, hid_devices):
"""Returns a list of available teensy-style consoles by doing a brute-force search.
Some versions of linux don't report usage and usage_page. In that case we fallback to reading the report (possibly inaccurately) ourselves.
"""
devices = []
for device in hid_devices:
path = device['path'].decode('utf-8')
if path.startswith('/dev/hidraw'):
number = path[11:]
report = Path(f'/sys/class/hidraw/hidraw{number}/device/report_descriptor')
if report.exists():
rp = report.read_bytes()
if rp[1] == 0x31 and rp[3] == 0x09:
devices.append(device)
return devices
def find_bootloaders(self):
"""Returns a list of available bootloader devices.
"""
import usb.core
return list(filter(self.is_bootloader, usb.core.find(find_all=True)))
def find_devices(self):
"""Returns a list of available teensy-style consoles.
"""
hid_devices = self.hid.enumerate()
devices = list(filter(self.is_console_hid, hid_devices))
if not devices:
devices = self.find_devices_by_report(hid_devices)
if self.vid and self.pid:
devices = list(filter(self.is_filtered_device, devices))
# Add index numbers
device_index = {}
for device in devices:
id = ':'.join((int2hex(device['vendor_id']), int2hex(device['product_id'])))
if id not in device_index:
device_index[id] = 0
device_index[id] += 1
device['index'] = device_index[id]
return devices
def int2hex(number):
"""Returns a string representation of the number as hex.
"""
return "%04X" % number
def list_devices(device_finder):
"""Show the user a nicely formatted list of devices.
"""
devices = device_finder.find_devices()
if devices:
cli.log.info('Available devices:')
for dev in devices:
color = LOG_COLOR['colors'][LOG_COLOR['next']]
LOG_COLOR['next'] = (LOG_COLOR['next'] + 1) % len(LOG_COLOR['colors'])
cli.log.info("\t%s%s:%s:%d{style_reset_all}\t%s %s", color, int2hex(dev['vendor_id']), int2hex(dev['product_id']), dev['index'], dev['manufacturer_string'], dev['product_string'])
if cli.args.bootloaders:
bootloaders = device_finder.find_bootloaders()
if bootloaders:
cli.log.info('Available Bootloaders:')
for dev in bootloaders:
cli.log.info("\t%s:%s\t%s", int2hex(dev.idVendor), int2hex(dev.idProduct), KNOWN_BOOTLOADERS[(int2hex(dev.idVendor), int2hex(dev.idProduct))])
@cli.argument('--bootloaders', arg_only=True, default=True, action='store_boolean', help='displaying bootloaders.')
@cli.argument('-d', '--device', help='Device to select - uses format <pid>:<vid>[:<index>].')
@cli.argument('-l', '--list', arg_only=True, action='store_true', help='List available hid_listen devices.')
@cli.argument('-n', '--numeric', arg_only=True, action='store_true', help='Show VID/PID instead of names.')
@cli.argument('-t', '--timestamp', arg_only=True, action='store_true', help='Print the timestamp for received messages as well.')
@cli.argument('-w', '--wait', type=int, default=1, help="How many seconds to wait between checks (Default: 1)")
@cli.subcommand('Acquire debugging information from usb hid devices.')
def console(cli):
"""Acquire debugging information from usb hid devices
"""
vid = None
pid = None
index = 1
if cli.config.console.device:
device = cli.config.console.device.split(':')
if len(device) == 2:
vid, pid = device
elif len(device) == 3:
vid, pid, index = device
if not index.isdigit():
cli.log.error('Device index must be a number! Got "%s" instead.', index)
exit(1)
index = int(index)
if index < 1:
cli.log.error('Device index must be greater than 0! Got %s', index)
exit(1)
else:
cli.log.error('Invalid format for device, expected "<pid>:<vid>[:<index>]" but got "%s".', cli.config.console.device)
cli.print_help()
exit(1)
vid = vid.upper()
pid = pid.upper()
device_finder = FindDevices(vid, pid, index, cli.args.numeric)
if cli.args.list:
return list_devices(device_finder)
print('Looking for devices...', flush=True)
device_finder.run_forever()
+12 -8
View File
@@ -83,21 +83,25 @@ def setup(cli):
git_upstream(cli.args.home) git_upstream(cli.args.home)
else: else:
exit(1) exit(1)
else:
cli.log.warning('Not cloning qmk_firmware due to user input or --no flag.')
# 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
color = '--color' if cli.config.general.color else '--no-color' if cli.args.home.exists():
unicode = '--unicode' if cli.config.general.unicode else '--no-unicode' color = '--color' if cli.config.general.color else '--no-color'
doctor_command = [sys.argv[0], color, unicode, 'doctor'] 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('-n')
if cli.args.yes: if cli.args.yes:
doctor_command.append('--yes') doctor_command.append('-y')
cli.run(doctor_command, capture_output=False) cli.run(doctor_command, stdin=None, capture_output=False)
+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-*
+28 -2
View File
@@ -1,2 +1,28 @@
bumpversion bleach==4.0.0
twine build==0.6.0.post1
bump2version==1.0.1
bumpversion==0.6.0
certifi==2021.5.30
cffi==1.14.6
chardet==4.0.0
cryptography==3.4.7
docutils==0.17.1
idna==2.10
importlib-metadata==4.6.3
jeepney==0.7.1
keyring==23.0.1
packaging==21.0
pkginfo==1.7.1
pycparser==2.20
pyparsing==2.4.7
readme-renderer==29.0
requests==2.26.0
requests-toolbelt==0.9.1
rfc3986==1.5.0
SecretStorage==3.3.1
six==1.16.0
tqdm==4.62.0
twine==3.4.2
urllib3==1.26.6
webencodings==0.5.1
zipp==3.5.0
+52 -19
View File
@@ -1,13 +1,5 @@
[bumpversion] #[bumpversion]
current_version = 0.0.48 # Bumpversion config has been moved to .bumpversion.cfg
commit = True
tag = True
tag_name = {new_version}
message = New release: {current_version} → {new_version}
[bumpversion:file:qmk_cli/__init__.py]
[bumpversion:file:setup.cfg]
[bdist_wheel] [bdist_wheel]
universal = 1 universal = 1
@@ -16,17 +8,58 @@ universal = 1
ignore = E501,E226 ignore = E501,E226
[metadata] [metadata]
name = qmk
version = 0.3.2
author = skullydazed author = skullydazed
author-email = skullydazed@gmail.com author_email = skullydazed@gmail.com
description-file = README.md description = A program to help users work with QMK Firmware.
dist-name = qmk long_description = file: README.md
license_file = LICENSE long_description_content_type = text/markdown
module = qmk_cli license = MIT License
home-page = https://github.com/qmk/qmk_cli project_urls =
requires-python = >=3.7 Bug Tracker = https://github.com/qmk/qmk_cli/issues
Documentation = https://docs.qmk.fm/#/cli
Homepage = https://qmk.fm/
Source = https://github.com/qmk/qmk_cli/
classifiers =
Development Status :: 3 - Alpha
Environment :: Console
Intended Audience :: Developers
Intended Audience :: System Administrators
Intended Audience :: End Users/Desktop
License :: OSI Approved :: MIT License
Natural Language :: English
Programming Language :: Python :: 3 :: Only
Topic :: Scientific/Engineering
Topic :: Software Development
Topic :: Utilities
[entry_points] [options]
qmk = qmk_cli.script_qmk:main install_requires =
appdirs==1.4.4
argcomplete==1.12.3
attrs==21.2.0
colorama==0.4.4
coverage==5.5
halo==0.0.31
hid==1.0.4
log-symbols==0.0.14
mccabe==0.6.1
milc==1.5.0
pycodestyle==2.7.0
pyflakes==2.3.1
pyrsistent==0.18.0
pyusb==1.2.1
setuptools>=45
six==1.16.0
spinners==0.0.24
termcolor==1.1.0
packages = find:
python_requiures = >=3.7
[options.entry_points]
console_scripts =
qmk = qmk_cli.script_qmk:main
[yapf] [yapf]
align_closing_bracket_with_visual_indent = True align_closing_bracket_with_visual_indent = True
-57
View File
@@ -1,57 +0,0 @@
from configparser import ConfigParser
from setuptools import setup, find_packages
setup_cfg = ConfigParser()
setup_cfg.read('setup.cfg')
metadata = setup_cfg['metadata']
if __name__ == "__main__":
with open('README.md', encoding='utf-8') as readme_file:
long_description = readme_file.read()
setup(
name=metadata['dist-name'],
description='A program to help users work with QMK Firmware.',
entry_points={
'console_scripts': ['%s = %s' % i for i in setup_cfg['entry_points'].items()],
},
license='MIT License',
url=metadata['home-page'],
version=setup_cfg['bumpversion']['current_version'],
author=metadata['author'],
author_email=metadata['author-email'],
maintainer=metadata['author'],
maintainer_email=metadata['author-email'],
long_description=long_description,
long_description_content_type="text/markdown",
packages=find_packages(),
py_modules=['qmk_cli'],
classifiers=[
'Development Status :: 3 - Alpha',
'Environment :: Console',
'Intended Audience :: Developers',
'Intended Audience :: System Administrators',
'Intended Audience :: End Users/Desktop',
'License :: OSI Approved :: MIT License',
'Natural Language :: English',
'Programming Language :: Python :: 3 :: Only',
'Topic :: Scientific/Engineering',
'Topic :: Software Development',
'Topic :: Utilities',
],
python_requires=metadata['requires-python'],
install_requires=[
"appdirs",
"argcomplete",
"colorama",
"dotty-dict",
"flake8",
"hid",
"hjson",
"jsonschema>=3",
"milc>=1.3.0",
"nose2",
"pygments",
"pyusb",
"yapf"
]
)
+29
View File
@@ -0,0 +1,29 @@
#!/usr/bin/env python3
"""Trigger workflows that build QMK packages.
"""
from os import environ
from pathlib import Path
import requests
# Pull in environment vars
gh_user = environ.get('GH_USERNAME', 'qmk-bot')
gh_pat = environ.get('QMK_BOT_TOKEN', '')
gh_repo_owner = environ.get('REPO_OWNER', 'qmk')
gh_repo_name = environ.get('REPO_NAME', 'qmk_fpm')
gh_ref = environ.get('GITHUB_REF', 'main')
gh_workflow_ids = environ.get('WORKFLOW_IDS', 'debian-buster-publish.yml,fedora-33-publish.yml,fedora-35-publish.yml,fedora-32-publish.yml,fedora-34-publish.yml,ubuntu-focal-publish.yml').split(',')
gh_api_url = environ.get('GITHUB_API_URL', 'https://api.github.com')
gh_workflow_args = {'ref': gh_ref}
gh_workflow_headers = {'Accept': 'application/vnd.github.v3+json'}
for gh_workflow_id in gh_workflow_ids:
gh_workflow_endpoint = f'{gh_api_url}/repos/{gh_repo_owner}/{gh_repo_name}/actions/workflows/{gh_workflow_id}/dispatches'
print(f'Triggering {gh_workflow_id} workflow at: {gh_workflow_endpoint}')
workflow_dispatch = requests.post(gh_workflow_endpoint, headers=gh_workflow_headers, json=gh_workflow_args, auth=(gh_user, gh_pat))
if workflow_dispatch.status_code != 204:
print(f'Error from GitHub API, status_code {workflow_dispatch.status_code}!')
print(workflow_dispatch.text)
exit(1)
exit(0)