Compare commits

...

72 Commits

Author SHA1 Message Date
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
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
Zach White 8f5b8e83c0 New release: 0.0.41 → 0.0.42 2021-03-27 13:03:22 -07:00
Zach White 1da98510d3 make the qmk_firmware check more robust 2021-03-27 11:34:36 -07:00
20 changed files with 735 additions and 177 deletions
+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"
+5 -19
View File
@@ -17,27 +17,15 @@ jobs:
python-version: [3.7, 3.8, 3.9]
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v2.3.4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
uses: actions/setup-python@v2.2.2
with:
python-version: ${{ matrix.python-version }}
- name: Install Python dependencies
run: |
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
- name: Run ci_tests
run: ./ci_tests -a
test_cli_win:
runs-on: windows-latest
@@ -45,7 +33,7 @@ jobs:
QMK_HOME: $HOME/qmk_firmware
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v2.3.4
- name: (MSYS2) Setup and install dependencies
uses: msys2/setup-msys2@v2
@@ -57,7 +45,6 @@ jobs:
shell: msys2 {0}
run: |
python3 -m pip install wheel
- name: (MSYS2) Install QMK CLI from source
shell: msys2 {0}
run: |
@@ -65,7 +52,6 @@ jobs:
python3 setup.py sdist bdist_wheel
cd ..
python3 -m pip install --force-reinstall --no-index --no-deps --find-links qmk_cli/dist qmk
- name: (MSYS2) Run qmk setup -y
shell: msys2 {0}
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
+60
View File
@@ -0,0 +1,60 @@
# 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.3.4
- name: Set up Python
uses: actions/setup-python@v2.2.2
with:
python-version: '3.7'
- name: Run ci_tests
run: ./ci_tests
- 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: qmk
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
python setup.py sdist bdist_wheel
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
+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
+10 -7
View File
@@ -1,5 +1,6 @@
# 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)
A program to help users work with [QMK Firmware](https://qmk.fm/).
# Features
@@ -7,16 +8,18 @@ A program to help users work with [QMK Firmware](https://qmk.fm/).
* Interact with your qmk_firmware tree from any location
* Use `qmk clone` to pull down anyone's `qmk_firmware` fork
* 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`
* Dispatches to `qmk_firmware/bin/qmk` for additional functionality:
* `qmk compile-json`
* More to come
* Integrates with qmk_firmware for additional functionality:
* `qmk compile`
* `qmk info`
* `qmk flash`
* `qmk lint`
* ...and many more!
# Quickstart
Full documentation: <https://docs.qmk.fm/#/tutorial>
Basic steps:
* `python3 -m pip install qmk`
* `qmk setup`
Full documentation: <https://docs.qmk.fm/#/tutorial>
+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
+1 -1
View File
@@ -1,3 +1,3 @@
"""A program to help you work with qmk_firmware."""
__version__ = '0.0.41'
__version__ = '0.3.0'
+14 -52
View File
@@ -8,58 +8,22 @@ from pathlib import Path
from milc import cli
def broken_module_imports():
"""Make sure we can import all the python modules.
def is_qmk_firmware(qmk_firmware):
"""Returns True if the given Path() is a qmk_firmware clone.
"""
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]
paths = [
qmk_firmware,
qmk_firmware / 'quantum',
qmk_firmware / 'requirements.txt',
qmk_firmware / 'requirements-dev.txt',
qmk_firmware / 'lib/python/qmk/cli/__init__.py'
]
if broken_modules:
to_return[0] = True
for path in paths:
if not path.exists():
return False
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
return True
@lru_cache(maxsize=2)
@@ -88,9 +52,7 @@ def in_qmk_firmware():
"""
cur_dir = Path.cwd()
while len(cur_dir.parents) > 0:
found_lib = cur_dir / 'lib/python/qmk/cli/__init__.py'
found_quantum = cur_dir / 'quantum'
if found_lib.is_file() and found_quantum.is_dir():
if is_qmk_firmware(cur_dir):
return cur_dir
# Move up a directory before the next iteration
+8 -31
View File
@@ -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
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()
@@ -65,34 +67,9 @@ def main():
import qmk_cli.subcommands
# 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.
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:
+2
View File
@@ -3,4 +3,6 @@
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 console # noqa
from . import env # 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()
+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}"')
+13 -24
View File
@@ -9,6 +9,7 @@ from pathlib import Path
from milc import cli
from milc.questions import yesno
from qmk_cli.git import git_clone
from qmk_cli.helpers import is_qmk_firmware
default_base = 'https://github.com'
default_repo = 'qmk_firmware'
@@ -42,24 +43,6 @@ def git_upstream(destination):
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('-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)
@@ -100,19 +83,25 @@ def setup(cli):
git_upstream(cli.args.home)
else:
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.
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.executable, sys.argv[0], 'doctor']
if cli.args.home.exists():
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')
if cli.args.no:
doctor_command.append('-n')
if cli.args.yes:
doctor_command.append('--yes')
if cli.args.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
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
+29 -2
View File
@@ -1,2 +1,29 @@
bumpversion
twine
bleach==4.0.0
bump2version==1.0.1
bumpversion==0.6.0
certifi==2021.5.30
cffi==1.14.6
chardet==4.0.0
colorama==0.4.4
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
Pygments==2.9.0
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
+1 -1
View File
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 0.0.41
current_version = 0.3.0
commit = True
tag = True
tag_name = {new_version}
+27 -13
View File
@@ -24,7 +24,7 @@ if __name__ == "__main__":
long_description=long_description,
long_description_content_type="text/markdown",
packages=find_packages(),
py_modules=['milc'],
py_modules=['qmk_cli'],
classifiers=[
'Development Status :: 3 - Alpha',
'Environment :: Console',
@@ -40,16 +40,30 @@ if __name__ == "__main__":
],
python_requires=metadata['requires-python'],
install_requires=[
"appdirs",
"argcomplete",
"colorama",
"dotty-dict",
"flake8",
"hjson",
"jsonschema>=3",
"milc>=1.0.8",
"nose2",
"pygments",
"yapf"
],
"appdirs==1.4.4",
"argcomplete==1.12.3",
"attrs==21.2.0",
"colorama==0.4.4",
"coverage==5.5",
"qmk-dotty-dict==1.3.0.post1",
"flake8==3.9.2",
"halo==0.0.31",
"hid==1.0.4",
"hjson==3.0.2",
"jsonschema==3.2.0",
"log-symbols==0.0.14",
"mccabe==0.6.1",
"milc==1.5.0",
"nose2==0.10.0",
"pycodestyle==2.7.0",
"pyflakes==2.3.1",
"Pygments==2.9.0",
"pyrsistent==0.18.0",
"pyusb==1.2.1",
"setuptools>=45",
"six==1.16.0",
"spinners==0.0.24",
"termcolor==1.1.0",
"yapf==0.31.0"
]
)