Compare commits

..

120 Commits

Author SHA1 Message Date
QMK Bot ed0d5699ff New release: 1.1.5 → 1.1.6 2024-10-30 04:09:20 +00:00
Joel Challis b1542e4a62 Update build status badge 2024-10-28 02:43:10 +00:00
dependabot[bot] 9c7c371419 Bump github/codeql-action from 2 to 3 (#164)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  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>
2024-10-27 05:01:35 +00:00
Joel Challis 8f85a8856f Update for milc 1.9.0 changes (#184) 2024-10-27 04:59:42 +00:00
dependabot[bot] 87c356773f Bump docker/build-push-action from 5.1.0 to 6.9.0 (#185)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.1.0 to 6.9.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5.1.0...v6.9.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  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>
2024-10-27 04:58:53 +00:00
Wilhelm Schuster 53d8dab86f console: Adjust format string for could-not-connect message (#181) 2024-10-27 04:43:21 +00:00
Joel Challis 86a3decd0a Bump minimum Python version to 3.9 (#178) 2024-10-27 04:36:55 +00:00
QMK Bot d3917b10e7 New release: 1.1.4 → 1.1.5 2024-02-23 11:03:39 +00:00
Nick Brassel 86b3b74b21 Fixup package rebuild trigger for qmk_fpm. 2024-02-23 22:02:32 +11:00
QMK Bot bb385f7786 New release: 1.1.3 → 1.1.4 2024-02-23 10:57:48 +00:00
Nick Brassel e07ad4c9ee Swap to API token publishing. 2024-02-23 21:55:17 +11:00
QMK Bot 1e03b45986 New release: 1.1.2 → 1.1.3 2024-02-23 10:36:17 +00:00
Nick Brassel 7a1b556b25 Merge pull request #162 from qmk/pyvers 2024-02-23 21:34:58 +11:00
Nick Brassel d7911ffaf7 Disable qmk config -a test due to deficient milc. 2024-02-23 21:10:12 +11:00
Nick Brassel daa7f54dd0 milc bump to 1.6.8, add python 3.10-3.12. 2024-02-23 21:10:12 +11:00
dependabot[bot] 753136ade4 Bump actions/setup-python from 4 to 5 (#163) 2023-12-13 13:09:11 +11:00
Nick Brassel 579763620d Merge pull request #161 from qmk/dependabot/github_actions/docker/build-push-action-5.1.0 2023-11-30 19:52:19 +11:00
dependabot[bot] cbc22adb76 Bump docker/build-push-action from 5.0.0 to 5.1.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5.0.0...v5.1.0)

---
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>
2023-11-17 17:07:56 +00:00
Less/Rikki 82bb65bd52 feat: wb32 bootloader (#148) 2023-09-29 12:04:47 +01:00
Nick Brassel 671e553239 Merge pull request #156 from qmk/dependabot/github_actions/docker/setup-buildx-action-3 2023-09-22 07:07:40 +10:00
Nick Brassel fa4bcc034d Merge pull request #157 from qmk/dependabot/github_actions/docker/setup-qemu-action-3 2023-09-22 07:07:26 +10:00
Nick Brassel 0a048da8a4 Merge pull request #155 from qmk/dependabot/github_actions/docker/login-action-3 2023-09-22 07:07:17 +10:00
Nick Brassel 7808a1166c Merge pull request #158 from qmk/dependabot/github_actions/docker/build-push-action-5.0.0 2023-09-22 07:07:06 +10:00
Nick Brassel b9b2ebbe13 Merge pull request #153 from qmk/dependabot/github_actions/actions/checkout-4 2023-09-22 07:06:55 +10:00
dependabot[bot] b4b53e80eb Bump docker/build-push-action from 4.1.1 to 5.0.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4.1.1 to 5.0.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4.1.1...v5.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 17:40:58 +00:00
dependabot[bot] 2212fdabf7 Bump docker/setup-qemu-action from 2 to 3
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 17:40:53 +00:00
dependabot[bot] 1e8a174e0c Bump docker/setup-buildx-action from 2 to 3
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 17:40:48 +00:00
dependabot[bot] 6868d5ba6f Bump docker/login-action from 2 to 3
Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 17:40:41 +00:00
dependabot[bot] e203006537 Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 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/v3...v4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 17:05:56 +00:00
dependabot[bot] 1c72e1e564 Bump docker/build-push-action from 4.0.0 to 4.1.1 (#149)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4.0.0 to 4.1.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4.0.0...v4.1.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>
2023-06-14 04:16:53 +10:00
QMK Bot aecd02e850 New release: 1.1.1 → 1.1.2 2023-04-05 10:05:42 +00:00
Nick Brassel 5019970d01 Merge pull request #145 from qmk/attempted-formatting-fix 2023-04-05 20:04:23 +10:00
Nick Brassel 446547df04 Update qmk_cli/subcommands/console.py
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2023-04-05 18:07:39 +10:00
Nick Brassel dea98e71b8 Revert, no work. 2023-04-03 07:46:20 +10:00
Nick Brassel ea62fa1cec Let's try that again. 2023-04-03 07:45:24 +10:00
Nick Brassel 32129ee5a2 Update qmk_cli/subcommands/console.py
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2023-04-03 07:43:04 +10:00
Nick Brassel 6638c13c36 Take 2 2023-04-02 10:32:27 +10:00
Nick Brassel 98ab6a52f6 Attempted formatting fix. 2023-04-02 10:27:46 +10:00
Joel Challis f9d3020616 Fix docker build? (#144) 2023-03-16 23:06:24 +00:00
zvecr 1c98cf7053 Fix republish 2023-03-16 22:57:57 +00:00
Joel Challis 6b98cb311f Update to reflect latest base container (#143)
* pull base container from ghcr
* also push to ghcr
* also publish arm container
2023-03-16 22:51:14 +00:00
dependabot[bot] 8a4bf2d437 Bump docker/build-push-action from 3.3.0 to 4.0.0 (#142)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.3.0 to 4.0.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3.3.0...v4.0.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  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>
2023-02-28 22:35:32 +00:00
Nick Brassel db645b7db8 Merge pull request #137 from qmk/zvecr-patch-2 2023-01-19 10:39:39 +11:00
Nick Brassel 3f4c491202 Merge pull request #138 from qmk/zvecr-patch-1 2023-01-19 10:39:23 +11:00
Nick Brassel 39d3adddff Merge pull request #141 from qmk/dependabot/github_actions/docker/build-push-action-3.3.0 2023-01-17 04:43:12 +11:00
dependabot[bot] d557058db7 Bump docker/build-push-action from 3.2.0 to 3.3.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3.2.0...v3.3.0)

---
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>
2023-01-16 17:02:47 +00:00
Joel Challis 3126bdb90a Also handle clone too 2023-01-02 03:31:01 +00:00
Joel Challis d2f73683f8 Allow setup to handle empty home directories 2023-01-02 03:09:52 +00:00
Joel Challis 83978d4c68 Run qmk doctor in the correct directory 2023-01-02 02:59:51 +00:00
dependabot[bot] bb00940631 Bump docker/build-push-action from 3.1.1 to 3.2.0 (#135)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3.1.1...v3.2.0)

---
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>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-27 22:00:55 +00:00
dependabot[bot] 29bcd3aa01 Bump docker/login-action from 2.0.0 to 2.1.0 (#134)
Bumps [docker/login-action](https://github.com/docker/login-action) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2.0.0...v2.1.0)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-27 22:00:35 +00:00
QMK Bot 42481f2db3 New release: 1.1.0 → 1.1.1 2022-08-20 13:32:16 +00:00
Nick Brassel 928d22d370 Merge pull request #133 from qmk/zvecr-patch-2 2022-08-20 23:02:28 +10:00
Nick Brassel 169e12a4c6 tabs/spaces etc. 2022-08-20 22:53:15 +10:00
Joel Challis 26ad0cd2b9 Align dependencies to develop 2022-08-20 11:52:15 +01:00
dependabot[bot] 63fc8ff722 Bump docker/build-push-action from 3.0.0 to 3.1.1 (#132) 2022-08-20 11:49:39 +01:00
Ryan bb912d3473 Revert dependency on qmk-dotty-dict (#129) 2022-07-12 11:45:34 +10:00
dependabot[bot] 7cb41c2daa Bump actions/setup-python from 3 to 4 (#130)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-03 10:51:43 +10:00
QMK Bot c7af299b48 New release: 1.0.0 → 1.1.0 2022-05-21 23:36:07 +00:00
Joel Challis c0698e953b Disable use of config for setup|clone|env (#128) 2022-05-20 23:53:24 +01:00
Joel Challis 54bf8328a1 Merge pull request #127 from qmk/python-requires-typo
Fix typo
2022-05-20 19:46:00 +01:00
Ryan ace9daea3e Fix typo 2022-05-20 23:51:03 +10:00
Joel Challis 255990f45b Merge pull request #122 from qmk/dependabot/github_actions/github/codeql-action-2
Bump github/codeql-action from 1 to 2
2022-05-17 21:50:40 +01:00
Joel Challis 1742e84da5 Merge pull request #125 from qmk/zvecr-patch-2
Align to current qmk_firmware develop deps
2022-05-17 21:50:31 +01:00
Joel Challis 2b4021eaa2 whitespace 2022-05-17 21:27:11 +01:00
Joel Challis 670ead38ad Install msys package for pillow? 2022-05-17 21:20:22 +01:00
Joel Challis c12c4a6e0d Align to current qmk_firmware develop deps 2022-05-17 21:09:32 +01:00
Joel Challis bd5e3b5cb4 Merge pull request #124 from qmk/dependabot/github_actions/docker/build-push-action-3.0.0
Bump docker/build-push-action from 2.10.0 to 3.0.0
2022-05-10 04:05:28 +01:00
Joel Challis 82fede52ac Merge pull request #123 from qmk/dependabot/github_actions/docker/login-action-2.0.0
Bump docker/login-action from 1.14.1 to 2.0.0
2022-05-10 04:05:19 +01:00
dependabot[bot] 76fa43cf78 Bump docker/build-push-action from 2.10.0 to 3.0.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2.10.0 to 3.0.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Upgrade guide](https://github.com/docker/build-push-action/blob/master/UPGRADE.md)
- [Commits](https://github.com/docker/build-push-action/compare/v2.10.0...v3.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-05 17:15:16 +00:00
dependabot[bot] 7ec12a8b9d Bump docker/login-action from 1.14.1 to 2.0.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 1.14.1 to 2.0.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v1.14.1...v2.0.0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-05 17:15:12 +00:00
dependabot[bot] b714ea60c3 Bump github/codeql-action from 1 to 2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-26 17:20:16 +00:00
Joel Challis 1797e83de8 Merge pull request #119 from Erovia/bump_jsonschema_version
Bump the 'jsonschema' version
2022-04-06 19:43:45 +01:00
Joel Challis 593ae652e6 Merge pull request #120 from qmk/dependabot/github_actions/docker/build-push-action-2.10.0
Bump docker/build-push-action from 2.9.0 to 2.10.0
2022-03-28 06:29:09 +01:00
dependabot[bot] 963818be15 Bump docker/build-push-action from 2.9.0 to 2.10.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2.9.0 to 2.10.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v2.9.0...v2.10.0)

---
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>
2022-03-15 17:17:45 +00:00
Erovia 47b977f9b2 Bump the 'jsonschema' version
Bump the installed version of jsonschema to >=4 so we have access to the
validator of the latest meta-schema.
As we already request >=3, installations after 2021-11-30 should satisfy
the new requirements.
2022-03-13 21:45:25 +00:00
Joel Challis 8c0f655483 Merge pull request #118 from qmk/dependabot/github_actions/docker/login-action-1.14.1
Bump docker/login-action from 1.14.0 to 1.14.1
2022-03-08 21:56:23 +00:00
Joel Challis e0aacc9dc7 Merge pull request #117 from qmk/dependabot/github_actions/actions/checkout-3
Bump actions/checkout from 2.4.0 to 3
2022-03-08 21:56:17 +00:00
dependabot[bot] 24472967eb Bump docker/login-action from 1.14.0 to 1.14.1
Bumps [docker/login-action](https://github.com/docker/login-action) from 1.14.0 to 1.14.1.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v1.14.0...v1.14.1)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-02 17:17:16 +00:00
dependabot[bot] 1a2e43aa58 Bump actions/checkout from 2.4.0 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2.4.0 to 3.
- [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/v2.4.0...v3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-02 17:17:13 +00:00
Joel Challis ffed902922 Merge pull request #115 from qmk/dependabot/github_actions/actions/setup-python-3
Bump actions/setup-python from 2.3.2 to 3
2022-02-28 19:58:09 +00:00
Joel Challis 325868514b Merge pull request #116 from qmk/dependabot/github_actions/docker/login-action-1.14.0
Bump docker/login-action from 1.13.0 to 1.14.0
2022-02-28 19:56:33 +00:00
dependabot[bot] dbfdd2dec5 Bump docker/login-action from 1.13.0 to 1.14.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 1.13.0 to 1.14.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v1.13.0...v1.14.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-28 17:20:12 +00:00
dependabot[bot] de7f8f6b70 Bump actions/setup-python from 2.3.2 to 3
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 2.3.2 to 3.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v2.3.2...v3)

---
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>
2022-02-28 17:20:09 +00:00
Joel Challis 552fe67430 Merge pull request #114 from qmk/rebuild_docker
Add workflow to rebuild docker image
2022-02-21 11:07:00 +00:00
zvecr de28654c6d Add workflow to rebuild docker image 2022-02-20 22:00:13 +00:00
Joel Challis 02c190894a Merge pull request #112 from qmk/dependabot/github_actions/actions/setup-python-2.3.2
Bump actions/setup-python from 2.2.2 to 2.3.2
2022-02-20 20:49:38 +00:00
dependabot[bot] 7df9a61f89 Bump actions/setup-python from 2.2.2 to 2.3.2
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 2.2.2 to 2.3.2.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v2.2.2...v2.3.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-20 20:22:18 +00:00
Joel Challis dad8b3c15a Merge pull request #113 from qmk/dependabot/github_actions/docker/login-action-1.13.0
Bump docker/login-action from 1.10.0 to 1.13.0
2022-02-20 20:22:06 +00:00
Joel Challis e24448ed18 Merge pull request #111 from qmk/dependabot/github_actions/docker/build-push-action-2.9.0
Bump docker/build-push-action from 2.6.1 to 2.9.0
2022-02-20 20:21:54 +00:00
Joel Challis 9befc84294 Merge pull request #102 from qmk/dependabot/github_actions/actions/checkout-2.4.0
Bump actions/checkout from 2.3.4 to 2.4.0
2022-02-20 20:21:23 +00:00
dependabot[bot] bb489e8ec2 Bump docker/login-action from 1.10.0 to 1.13.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 1.10.0 to 1.13.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v1.10.0...v1.13.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-17 17:19:35 +00:00
Ryan f208f0228c Dependabot config: request review for Actions dependencies (#110) 2022-02-08 12:55:26 +11:00
dependabot[bot] e4e8f987e1 Bump docker/build-push-action from 2.6.1 to 2.9.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2.6.1 to 2.9.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v2.6.1...v2.9.0)

---
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>
2022-02-01 17:14:21 +00:00
dependabot[bot] 9f74f1ca9c Bump actions/checkout from 2.3.4 to 2.4.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 2.3.4 to 2.4.0.
- [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/v2.3.4...v2.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-03 17:13:33 +00:00
Joel Challis bb1a9e43cf Merge pull request #97 from qmk/bootloader-list-update
Update bootloader list
2021-09-23 15:53:07 +01:00
Ryan 501182017e Update bootloader list 2021-09-13 19:47:11 +10:00
QMK Bot 710dc3e951 New release: 0.4.0 → 1.0.0 2021-08-25 03:13:23 +00:00
QMK Bot 12242d94c2 New release: 0.3.5 → 0.4.0 2021-08-24 17:39:24 +00:00
Nick Brassel 19336ff9ee Merge pull request #96 from qmk/unpin_deps
Unpin dependencies
2021-08-24 16:36:44 +10:00
Zach White 8e1de74918 remove non-direct dependencies 2021-08-23 15:13:24 -07:00
Zach White 137ed60056 unpin dependencies 2021-08-23 14:59:05 -07:00
Nick Brassel d320265936 Merge pull request #93 from drashna/console_qmk_hid
Add LUFA/QMK HID Bootloader support
2021-08-18 04:24:11 +10:00
Drashna Jael're 97346a44bc Begrudgingly add lufa-ms 2021-08-17 01:27:59 -07:00
Drashna Jael're 1e0b08250d Add LUFA/QMK HID Bootloader support
And remove duplicate entry
2021-08-16 22:39:52 -07:00
QMK Bot 6a928e9322 New release: 0.3.4 → 0.3.5 2021-08-13 18:26:21 +00:00
QMK Bot 5315431058 New release: 0.3.3 → 0.3.4 2021-08-13 18:07:41 +00:00
Zach White aa11928c03 remove extraneous backticks 2021-08-12 11:38:48 -07:00
Zach White 369c3e150a document building and packages in the readme 2021-08-12 11:18:15 -07:00
Zach White c4e82e0740 only trigger fedora32 2021-08-12 10:40:51 -07:00
QMK Bot 95152b6f7f New release: 0.3.2 → 0.3.3 2021-08-12 17:27:08 +00:00
Zach White 3bd1a79bfa fix ref for trigger 2021-08-12 10:25:27 -07:00
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
25 changed files with 658 additions and 381 deletions
+12
View File
@@ -0,0 +1,12 @@
[bumpversion]
current_version = 1.1.6
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]
+2
View File
@@ -7,6 +7,8 @@ updates:
directory: "/" directory: "/"
schedule: schedule:
interval: "daily" interval: "daily"
reviewers:
- "qmk/collaborators"
- package-ecosystem: "pip" # See documentation for possible values - package-ecosystem: "pip" # See documentation for possible values
directory: "/" # Location of package manifests directory: "/" # Location of package manifests
schedule: schedule:
+33 -10
View File
@@ -7,20 +7,41 @@ on:
pull_request: pull_request:
jobs: jobs:
test_cli_base_container:
runs-on: ubuntu-latest
container: ghcr.io/qmk/qmk_base_container
env:
QMK_HOME: ~/qmk_firmware
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: apt-get update && apt-get install -y python3-venv
- name: Run ci_tests
run: ./ci_tests -a
test_cli_linux_macos: test_cli_linux_macos:
needs: test_cli_base_container
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
env: env:
QMK_HOME: ~/qmk_firmware QMK_HOME: ~/qmk_firmware
strategy: strategy:
matrix: matrix:
os: [macos-latest, ubuntu-latest] os: [macos-latest, ubuntu-latest]
python-version: [3.7, 3.8, 3.9] python-version: ['3.9', '3.10', '3.11', '3.12']
include:
- os: macos-13
python-version: '3.9'
steps: steps:
- uses: actions/checkout@v2.3.4 - uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2.2.2 uses: actions/setup-python@v5
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
@@ -28,30 +49,32 @@ jobs:
run: ./ci_tests -a run: ./ci_tests -a
test_cli_win: test_cli_win:
needs: test_cli_base_container
runs-on: windows-latest runs-on: windows-latest
env: env:
QMK_HOME: $HOME/qmk_firmware QMK_HOME: $HOME/qmk_firmware
steps: steps:
- uses: actions/checkout@v2.3.4 - uses: actions/checkout@v4
- name: (MSYS2) Setup and install dependencies - name: (MSYS2) Setup and install dependencies
uses: msys2/setup-msys2@v2 uses: msys2/setup-msys2@v2
with: with:
update: true update: true
install: git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python-pip install: git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python-pip mingw-w64-x86_64-python-build mingw-w64-x86_64-python-pillow mingw-w64-x86_64-rust
# Upgrade pip due to msys packaging + pypa/build/pull/736 issues
- 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 --upgrade pip
- 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 build
python3 setup.py sdist bdist_wheel python3 -m pip install dist/qmk-*.tar.gz
cd ..
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
+4 -4
View File
@@ -39,11 +39,11 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v2.3.4 uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v1 uses: github/codeql-action/init@v3
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file. # If you wish to specify custom queries, you can do so here or in a config file.
@@ -54,7 +54,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # 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) # If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@v1 uses: github/codeql-action/autobuild@v3
# ️ Command-line programs to run using the OS shell. # ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl # 📚 https://git.io/JvXDl
@@ -68,4 +68,4 @@ jobs:
# make release # make release
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1 uses: github/codeql-action/analyze@v3
+56
View File
@@ -0,0 +1,56 @@
name: Rebuild Docker Image
on:
workflow_dispatch:
jobs:
redeploy:
runs-on: ubuntu-latest
steps:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 'Get Previous tag'
id: previoustag
uses: "WyriHaximus/github-action-get-previous-tag@v1"
- name: Download previous artifact
run: |
pip download -d "${GITHUB_WORKSPACE}/dist" qmk=="${{ steps.previoustag.outputs.tag }}"
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Build and Push to Docker Hub
uses: docker/build-push-action@v6.9.0
with:
context: .
push: true
platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/qmk/qmk_cli:latest
qmkfm/qmk_cli:latest
+38 -73
View File
@@ -13,54 +13,32 @@ on:
jobs: jobs:
deploy: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2.3.4
# Environment Setup
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v2.2.2 uses: actions/setup-python@v5
with: with:
python-version: '3.7' python-version: '3.9'
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- uses: actions/checkout@v4
- name: Run ci_tests - name: Run ci_tests
run: ./ci_tests run: ./ci_tests
- name: Install system dependencies - name: Install dependencies
run: | run: |
apt-get update python3 -m pip install --upgrade pip
apt-get install devscripts equivs sphinx-common sphinx-rtd-theme-common # dh-virtualenv deps pip install setuptools wheel
apt-get install debhelper dh-python python3-all # stdeb deps
apt-get install dpkg-sig # signing deps
- name: Install dh-virtualenv
run: |
git clone https://github.com/spotify/dh-virtualenv.git
cd dh-virtualenv
mk-build-deps -ri
dpkg-buildpackage -us -uc -b
cd ..
dpkg -i dh-virtualenv_*.deb
- name: Install GPG secret key
run: |
echo -e "${{ secrets.QMK_GPG_SECRET_KEY }}" | gpg --batch --import
gpg --list-secret-keys --keyid-format LONG
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel
pip install -r requirements-dev.txt pip install -r requirements-dev.txt
- 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 }}
# Build and upload new Python package
- name: Bump version - name: Bump version
run: | run: |
git config --local user.email "hello@qmk.fm" git config --local user.email "hello@qmk.fm"
@@ -76,49 +54,36 @@ jobs:
- name: Build and publish - name: Build and publish
env: env:
TWINE_USERNAME: qmk TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} TWINE_PASSWORD: ${{ secrets.PYPI_APITOKEN }}
run: | run: |
python setup.py sdist bdist_wheel python3 -m build
twine upload dist/* twine upload dist/*
# Build and upload new Docker container - name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Build and Push to Docker Hub - name: Build and Push to Docker Hub
uses: docker/build-push-action@v2.6.1 uses: docker/build-push-action@v6.9.0
with: with:
context: . context: .
push: true push: true
tags: qmkfm/qmk_cli:latest platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/qmk/qmk_cli:latest
qmkfm/qmk_cli:latest
# Build Debian package - name: Trigger OS package builds
- name: Build debian package run: ./trigger_packages
run: |
python3 setup.py bdist_deb
dpkg-sig -s builder -k F464DFD46C4DA3FD4D06234691B06358D2CAE8AE deb_dist/*.deb
# Create Debian repo
- name: Build debian package repository
run: |
mkdir -p deb_repo/deb deb_repo/dsc
cp gpg_pubkey.txt deb_repo
cp deb_dist/*.deb deb_repo/deb
cp deb_dist/*.dsc deb_dist/*.orig.tar.gz deb_dist/*.debian.tar.xz deb_repo/dsc
cd deb_repo
apt-ftparchive packages deb > Packages
apt-ftparchive sources dsc > Sources
gzip -k {Packages,Sources}
apt-ftparchive release . > Release
gpg --default-key F464DFD46C4DA3FD4D06234691B06358D2CAE8AE -abs -o Release.gpg Release
gpg --default-key F464DFD46C4DA3FD4D06234691B06358D2CAE8AE --clearsign -o InRelease Release
# Upload the Debian repo to S3
- name: Upload Debian Repo
uses: jakejarvis/s3-sync-action@0.5.1
with:
args: --acl public-read --follow-symlinks --delete
env: env:
AWS_S3_BUCKET: qmk-debian QMK_BOT_TOKEN: ${{ secrets.QMK_BOT_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }}
AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
SOURCE_DIR: 'deb_repo'
-5
View File
@@ -106,8 +106,3 @@ venv.bak/
# QMK # QMK
qmk_firmware qmk_firmware
# Debian packages
deb_dist
deb_repo
qmk-*.tar.gz
+1 -1
View File
@@ -1,4 +1,4 @@
FROM qmkfm/base_container FROM ghcr.io/qmk/qmk_base_container:latest
# Copy package in # Copy package in
ADD dist /tmp/dist ADD dist /tmp/dist
+37 -2
View File
@@ -1,5 +1,5 @@
# QMK CLI # QMK CLI
[![CLI Setup](https://github.com/qmk/qmk_cli/workflows/CLI%20Setup/badge.svg)](https://github.com/qmk/qmk_cli/actions?query=workflow%3A%22CLI+Setup%22) [![CLI Setup](https://github.com/qmk/qmk_cli/actions/workflows/cli_setup.yml/badge.svg)](https://github.com/qmk/qmk_cli/actions/workflows/cli_setup.yml)
A program to help users work with [QMK Firmware](https://qmk.fm/). A program to help users work with [QMK Firmware](https://qmk.fm/).
@@ -8,17 +8,52 @@ 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!
# Packages
We provide "install and go" packages for many Operating Systems.
## Linux
Packages for several distributions available here: https://github.com/qmk/qmk_fpm
## macOS
Using [Homebrew](https://brew.sh):
brew install qmk/qmk/qmk
## Windows
Download our custom MSYS2 installer here: https://msys.qmk.fm/
# Quickstart # Quickstart
* `python3 -m pip install qmk` * `python3 -m pip install qmk`
* `qmk setup` * `qmk setup`
# Building
We follow PEP517, you can install using [build](https://pypi.org/project/build/):
Setup:
python3 -m pip install build
Build:
python3 -m build
You can read more about working with PEP517 packages in the [Python Packaging User Guide](https://packaging.python.org/guides/distributing-packages-using-setuptools/#packaging-your-project).
# Documentation
Full documentation: <https://docs.qmk.fm/#/tutorial> Full documentation: <https://docs.qmk.fm/#/tutorial>
+2 -2
View File
@@ -36,8 +36,8 @@ python3 -m pip install -r requirements-dev.txt
# Ensure that qmk works # Ensure that qmk works
echo "*** Testing 'qmk clone -h'" echo "*** Testing 'qmk clone -h'"
qmk clone -h qmk clone -h
echo "*** Testing 'qmk config -a'" #echo "*** Testing 'qmk config -a'" # Test disabled as `milc` at least 1.6.8+ returns False and thus non-zero exit code
qmk config -a #qmk config -a
echo "*** Testing 'qmk setup -n'" echo "*** Testing 'qmk setup -n'"
qmk setup -n qmk setup -n
-65
View File
@@ -1,65 +0,0 @@
# Atmel DFU
### ATmega16U2
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2fef", TAG+="uaccess"
### ATmega32U2
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", TAG+="uaccess"
### ATmega16U4
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff3", TAG+="uaccess"
### ATmega32U4
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", TAG+="uaccess"
### AT90USB64
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff9", TAG+="uaccess"
### AT90USB162
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffa", TAG+="uaccess"
### AT90USB128
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", TAG+="uaccess"
# Input Club
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", ATTRS{idProduct}=="b007", TAG+="uaccess"
# STM32duino
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", TAG+="uaccess"
# STM32 DFU
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess"
# BootloadHID
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", TAG+="uaccess"
# USBAspLoader
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", TAG+="uaccess"
# ModemManager should ignore the following devices
# Atmel SAM-BA (Massdrop)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
# Caterina (Pro Micro)
## Spark Fun Electronics
### Pro Micro 3V3/8MHz
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9203", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Pro Micro 5V/16MHz
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9205", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### LilyPad 3V3/8MHz (and some Pro Micro clones)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9207", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
## Pololu Electronics
### A-Star 32U4
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1ffb", ATTRS{idProduct}=="0101", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
## Arduino SA
### Leonardo
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Micro
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
## Adafruit Industries LLC
### Feather 32U4
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000c", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### ItsyBitsy 32U4 3V3/8MHz
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000d", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### ItsyBitsy 32U4 5V/16MHz
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000e", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
## dog hunter AG
### Leonardo
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Micro
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
# hid_listen
KERNEL=="hidraw*", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl"
-3
View File
@@ -1,3 +0,0 @@
Files: *
Copyright: 2019-2021 Zach White, et al
License: expat
-52
View File
@@ -1,52 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGEKF6YBEACzlxKIzWbfxKpOQ60tvYupcSh3Cn6u9z0CI5aNTiTHBeTKA7WQ
NOzIBcH6EK+N1gmhkq4ykOCUZD8vFhYD+UMF4UyYsFcjhqSw6W4vPBBX4t9v8pqn
PvMy0eXBnfi4IiMaKwPInIeNB6JQXp+hvP+yByi0mifBwDt2zgj1bh/iCL29AF3S
sw+qlaURh7E3OYpR0t9EpJ6NYIAiebOwUegiG4HODSuSrueaAwE6tIXNvB8SapOP
VUO0ysDWBzTWg81bmGl2LCfC56iChTKSrw+9iCBD5zBJMQmMmLBiVYq2lHWGelHS
tv4bIyq77WNC24TQyH47L4Q+YcmcJwJYi4brQn0Nol0P+hQHmi/DjxXmGA0oDfnv
EcxnUddobzqldq3UmyWewoqKX4GQ0bHgl3bkIgDKQ5mUPLezRRqr8GBhD8aRYDv0
Tuxecpch8aEN8Alp/AWe3VSMxK/fN0xe8Q8gA8cSmGC+naQorafoD6WFe+1qUqHE
DJlEgvp68KfrmBaQd8vrHabjc3wcCoqn/vnOsExX5KLVTZKvKDWqUkhXwGkt9Unf
yCMJJr/LsHzVNAhFfXuxgRG/t6IF1HwGfJ8RvnTOjlOV69cWQwtpuf5dK9ZGhpBt
r1hGDZ+SCF/c2vM5422cjv2fsOJ2hRSwCaM+NAYaSSoYwP0bWCAoOeYolwARAQAB
tDpRTUsgRmlybXdhcmUgKE9mZmljaWFsIFFNSyBHUEcgU2lnbmluZyBLZXkpIDxo
ZWxsb0BxbWsuZm0+iQJUBBMBCgA+FiEE9GTf1GxNo/1NBiNGkbBjWNLK6K4FAmEK
F6YCGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQkbBjWNLK6K7J
iw/9H0LpNEShRhh29+XamPEiWUF3NF3OxCvbW56UNa0GQbTUnNK+mfyEs2vcIvQ0
4m9XP9QdqnpgIYtE0bKp0iJ+2Egsh0qpdyRrM527HvLXHUlq9ZcwcAeYPIGqAUV8
YBGIiBgPrQfLIjRw39cDBC/iP7CLn+c64ZzoaWdfNt7XWBpEZ07d7DFQ+858fcTJ
cs7eeAjhrC0A+JMjiluIWpcVQvGolB/0RQAbLooLXa25iYKI99iwkT9iX8x+EyRC
Pxd+za2fayojNqppQL9k+kgSeug0IB8bonJoyEvHy2x/x5IvJaPEiCVJj+DOydj3
JKEp7Al9vNuwfSVdn4ArhmlnaZElvfBXdz2DdoET+8sm95fS2uHFzD2Dx1F8D6Eb
yQNyvn13+whXK96DLXJqlHzAl6CFx9IefQDeuLoJYgWbK0cxSvD26d7V8BQxDU+d
XZNrl1KBTF5oCVUHt6nZ5Uf7ai0JZf0ugc+qdIvdXXMFIaWDK64HsIhZ2heSZ/+U
FEzw1+4IBXd1EvaC6smpUf3bZG0cLhZdG1js5JrXvWR6nZ9RYoSfPB+8YntRMklS
dupWh3XszA4XabsTBJZ6VHcCmErRNd6Z+Rf3cy/1n9Eud1SKuzUOFEAmeXeAuLHp
JqEWFB9jY8xcfTh7/mHISQv0MI/mNxt/cJZvZLOZAFB2bWe5Ag0EYQoXpgEQAK6T
rV/zw9aVSVHPrWwB7a8yIKa5ERXBb4LYTVXMX1KoN1tlFKQ13R+1Ga+5clGtKF3z
z1UZlVMxsWUF2stx8UIpVj2iTQriAVwBg440gfLV5Rddk4+mmOdo7r05q1MqpuG+
94+QT5QTvT9FjFMAW+oRnujmx00YSgqJPfFJdPZS93g1UCspUmqLKBbuJ0NzjnBv
+ISDe9ne78fQv9wjxfkKAiq/wNu2xLBN40RRmPKM7gu2mEy9Xovr8eYR4HrjyQhk
X+r54f5h8iKxbDl95716cgtYJpPbJVPTuERiqRjPziYA2OZSmH4kv9/wm6r1OwDH
4y80S0yBPc/tm98nHGBFKokWnEjyjm2a8g3zBnFGw6p5riNBCrVO3G/YFis+lCXl
Nj1Rz3tAAJqZz+ZMx6tDc9WnCzwYgKbpuYxVNRGLBNCqRA7TZiJgFJLemo9xsOuF
ANYNxDDEsIrKjO/DmdNl5240bY0pdqAnhXibvCbA5zFQP3W/h5CEaDMUaMUPZhWM
dSK7r4jzu2rJyQjVJ9aP8Cda+OP4GdzxY594Agra5oLxCsx5tM7BDvnq8PGAnSRn
LCNOiW5d6AYbj/15iqfsHD700R5+WI9K+rqAIIFxWNka5ih5m97ZYrZntV7lShIc
NenEUeOTByyve5viS6zNNSBtGH+K+z/3sefjWJcdABEBAAGJAjwEGAEKACYWIQT0
ZN/UbE2j/U0GI0aRsGNY0srorgUCYQoXpgIbDAUJA8JnAAAKCRCRsGNY0sroruwY
D/0VcLSwNtUPVO2p9TTbpPShzzMHyk9AlFG2WzIglfEKC3H54WJDkAxuBIswhLfa
77apJpj3ukE0FqhnxbdofK9lQR0F50wdCrvrc3vs/biqjGHKIyUojveOyyum68uB
kRQiihJ2RV8PsuOjNVpB0YwoVg8HYuJbGWsuTt7TVhaGLFTIZW08XOeWLQSiDEBy
qoaYTidOegtaoaQm3OWakpKCtdZZZXPXpYahW8OlMMoKKsdwHP0aCeOnLuHpwlVX
Pas+14J3mA+7CI8bL0SqXAev3UzXAQFeFhdd4B2+Rqgz18fEwAXu1HqHE1BQTFyG
4EN8Q6qteFamnJCWTJ8dWX6jJz8aztGVcaQqvgccQzVK54vihfhKjP68MscMA5vl
tCdCxlyV8zzghNVsHCx2P3XEbMLgoek8twNsdk+B344RcqgQV0ATs9OeV1ehtaQB
VMVRNbYJVsIbmxYc8gLkuHHb2xjqni6YbaXL9CBLGnu+mL1KA2QF4CjWix0B+Aqb
y/8Xu7l2guZGUO2lzlJWmEkL3dqw2UlrTnYdPTnl1kB4A4gDyhCaq9eRf3LoZAOP
cfK21MYiwfGwqSTuuImN4yzmAkVMFKQg/fenyVgZpGvKaZJb07sJOuFaDdHkZTld
i756iMGOCupSNiTeEEiZQn8VYR8SBm96/Sbrcb88+Il2Bw==
=t1lg
-----END PGP PUBLIC KEY BLOCK-----
+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.2.2' __version__ = '1.1.6'
+5 -6
View File
@@ -15,12 +15,11 @@ import milc
from . import __version__ 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.cli.milc_options(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 # These must happen after the milc.milc_options() call
import milc.subcommand.config # noqa, must come after milc.set_metadata() import milc.subcommand.config # noqa, must come after milc.milc_options()
from milc.questions import yesno
@milc.cli.entrypoint('CLI wrapper for running QMK commands.') @milc.cli.entrypoint('CLI wrapper for running QMK commands.')
@@ -46,9 +45,9 @@ def main():
"""Setup the environment before dispatching to the entrypoint. """Setup the environment before dispatching to the entrypoint.
""" """
# Warn if they use an outdated python version # Warn if they use an outdated python version
if sys.version_info < (3, 7): if sys.version_info < (3, 9):
print('Warning: Your Python version is out of date! Some subcommands may not work!') print('Warning: Your Python version is out of date! Some subcommands may not work!')
print('Please upgrade to Python 3.7 or later.') print('Please upgrade to Python 3.9 or later.')
if 'windows' in platform().lower(): if 'windows' in platform().lower():
msystem = os.environ.get('MSYSTEM', '') msystem = os.environ.get('MSYSTEM', '')
+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
+8 -7
View File
@@ -11,20 +11,21 @@ default_fork = 'qmk/' + default_repo
default_branch = 'master' default_branch = 'master'
@cli.argument('--baseurl', default='https://github.com', help='The URL all git operations start from (Default: https://github.com)') @cli.argument('--baseurl', arg_only=True, default='https://github.com', help='The URL all git operations start from (Default: https://github.com)')
@cli.argument('-b', '--branch', default=default_branch, help='The branch to clone. Default: %s' % default_branch) @cli.argument('-b', '--branch', arg_only=True, default=default_branch, help='The branch to clone. Default: %s' % default_branch)
@cli.argument('destination', default=None, nargs='?', help='The directory to clone to. Default: (current directory)') @cli.argument('destination', arg_only=True, default=None, nargs='?', help='The directory to clone to. Default: (current directory)')
@cli.argument('fork', default=default_fork, nargs='?', help='The qmk_firmware fork to clone. Default: %s' % default_fork) @cli.argument('fork', arg_only=True, default=default_fork, nargs='?', help='The qmk_firmware fork to clone. Default: %s' % default_fork)
@cli.subcommand('Clone a qmk_firmware fork.') @cli.subcommand('Clone a qmk_firmware fork.')
def clone(cli): def clone(cli):
if not cli.args.destination: if not cli.args.destination:
cli.args.destination = os.path.join(os.environ['ORIG_CWD'], default_fork.split('/')[-1]) cli.args.destination = os.path.join(os.environ['ORIG_CWD'], default_fork.split('/')[-1])
qmk_firmware = Path(cli.args.destination) qmk_firmware = Path(cli.args.destination)
git_url = '/'.join((cli.config.clone.baseurl, cli.args.fork)) git_url = '/'.join((cli.args.baseurl, cli.args.fork))
if qmk_firmware.exists(): # Exists (but not an empty dir)
if qmk_firmware.exists() and any(qmk_firmware.iterdir()):
cli.log.error('Destination already exists: %s', cli.args.destination) cli.log.error('Destination already exists: %s', cli.args.destination)
exit(1) exit(1)
return git_clone(git_url, cli.args.destination, cli.config.clone.branch) return git_clone(git_url, cli.args.destination, cli.args.branch)
+360
View File
@@ -0,0 +1,360 @@
"""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', '2045'): 'lufa-ms: LUFA Mass Storage Bootloader',
('03EB', '2067'): 'qmk-hid: HID Bootloader',
('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'): 'usbasploader: 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: Pololu 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',
('2A03', '0036'): 'caterina: Arduino Leonardo',
('2A03', '0037'): 'caterina: Arduino Micro',
('314B', '0106'): 'apm32-dfu: APM32 DFU ISP Mode',
('342D', 'DFA0'): 'wb32-dfu: WB32 Device in DFU 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('%s', '%(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{style_reset_all}): %(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()
+1 -1
View File
@@ -7,7 +7,7 @@ from milc import cli
from qmk_cli.helpers import is_qmk_firmware from qmk_cli.helpers import is_qmk_firmware
@cli.argument('var', default=None, nargs='?', help='Optional variable to query') @cli.argument('var', arg_only=True, default=None, nargs='?', help='Optional variable to query')
@cli.subcommand('Prints environment information.') @cli.subcommand('Prints environment information.')
def env(cli): def env(cli):
home = os.environ.get('QMK_HOME', "") home = os.environ.get('QMK_HOME', "")
+10 -9
View File
@@ -20,7 +20,7 @@ default_branch = 'master'
def git_upstream(destination): def git_upstream(destination):
"""Add the qmk/qmk_firmware upstream to a qmk_firmware clone. """Add the qmk/qmk_firmware upstream to a qmk_firmware clone.
""" """
git_url = '/'.join((cli.config.setup.baseurl, default_fork)) git_url = '/'.join((cli.args.baseurl, default_fork))
git_cmd = [ git_cmd = [
'git', 'git',
'-C', '-C',
@@ -45,10 +45,10 @@ def git_upstream(destination):
@cli.argument('-n', '--no', arg_only=True, action='store_true', help='Answer no to all questions') @cli.argument('-n', '--no', arg_only=True, action='store_true', help='Answer no to all questions')
@cli.argument('-y', '--yes', arg_only=True, action='store_true', help='Answer yes to all questions') @cli.argument('-y', '--yes', arg_only=True, action='store_true', help='Answer yes to all questions')
@cli.argument('--baseurl', default=default_base, help='The URL all git operations start from. Default: %s' % default_base) @cli.argument('--baseurl', arg_only=True, default=default_base, help='The URL all git operations start from. Default: %s' % default_base)
@cli.argument('-b', '--branch', default=default_branch, help='The branch to clone. Default: %s' % default_branch) @cli.argument('-b', '--branch', arg_only=True, default=default_branch, help='The branch to clone. Default: %s' % default_branch)
@cli.argument('-H', '--home', default=Path(os.environ['QMK_HOME']), type=Path, help='The location for QMK Firmware. Default: %s' % os.environ['QMK_HOME']) @cli.argument('-H', '--home', arg_only=True, default=Path(os.environ['QMK_HOME']), type=Path, help='The location for QMK Firmware. Default: %s' % os.environ['QMK_HOME'])
@cli.argument('fork', default=default_fork, nargs='?', help='The qmk_firmware fork to clone. Default: %s' % default_fork) @cli.argument('fork', arg_only=True, default=default_fork, nargs='?', help='The qmk_firmware fork to clone. Default: %s' % default_fork)
@cli.subcommand('Setup your computer for qmk_firmware.') @cli.subcommand('Setup your computer for qmk_firmware.')
def setup(cli): def setup(cli):
"""Guide the user through setting up their QMK environment. """Guide the user through setting up their QMK environment.
@@ -65,7 +65,8 @@ def setup(cli):
if is_qmk_firmware(cli.args.home): if is_qmk_firmware(cli.args.home):
cli.log.info('Found qmk_firmware at %s.', str(cli.args.home)) cli.log.info('Found qmk_firmware at %s.', str(cli.args.home))
elif cli.args.home.exists(): # Exists (but not an empty dir)
elif cli.args.home.exists() and any(cli.args.home.iterdir()):
path_str = str(cli.args.home) path_str = str(cli.args.home)
if cli.args.home.name != 'qmk_firmware': if cli.args.home.name != 'qmk_firmware':
@@ -77,9 +78,9 @@ def setup(cli):
else: else:
cli.log.error('Could not find qmk_firmware!') cli.log.error('Could not find qmk_firmware!')
if yesno(clone_prompt): if yesno(clone_prompt):
git_url = '/'.join((cli.config.setup.baseurl, cli.args.fork)) git_url = '/'.join((cli.args.baseurl, cli.args.fork))
if git_clone(git_url, cli.args.home, cli.config.setup.branch): if git_clone(git_url, cli.args.home, cli.args.branch):
git_upstream(cli.args.home) git_upstream(cli.args.home)
else: else:
exit(1) exit(1)
@@ -104,4 +105,4 @@ def setup(cli):
if cli.args.yes: if cli.args.yes:
doctor_command.append('-y') doctor_command.append('-y')
cli.run(doctor_command, stdin=None, capture_output=False) cli.run(doctor_command, stdin=None, capture_output=False, cwd=cli.args.home)
+4 -30
View File
@@ -1,30 +1,4 @@
bleach==4.0.0 build
bump2version==1.0.1 bumpversion
bumpversion==0.6.0 requests
certifi==2021.5.30 twine
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
stdeb==0.10.0
tqdm==4.62.0
twine==3.4.2
urllib3==1.26.6
webencodings==0.5.1
zipp==3.5.0
+48 -41
View File
@@ -1,51 +1,58 @@
[global] #[bumpversion]
command-packages: stdeb.command # Bumpversion config has been moved to .bumpversion.cfg
[bumpversion]
current_version = 0.2.2
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
[entry_points]
qmk = qmk_cli.script_qmk:main
[flake8] [flake8]
ignore = E501,E226 ignore = E501,E226
[metadata] [metadata]
name = qmk
version = 1.1.6
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://qmk.fm/ 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
[sdist_dsc] [options]
# Configuration for the Debian package install_requires =
with-python2: False hid
with-python3: True milc>=1.9.0
with-dh-virtualenv: True pyusb
sign-results: True setuptools>=45
compat: 10 # qmk_firmware packages
suite3: stable dotty-dict
package3: qmk hjson
maintainer: QMK Firmware (Official QMK GPG Signing Key) <hello@qmk.fm> jsonschema>=4
section: devel pillow
depends3: build-essential, clang-format, diffutils, gcc, git, unzip, wget, zip, python3-pip, binutils-avr, gcc-avr, avr-libc, binutils-arm-none-eabi, gcc-arm-none-eabi, libnewlib-arm-none-eabi, avrdude, dfu-programmer, dfu-util, teensy-loader-cli, libhidapi-hidraw0, libusb-dev pygments
depends: build-essential, clang-format, diffutils, gcc, git, unzip, wget, zip, python3-pip, binutils-avr, gcc-avr, avr-libc, binutils-arm-none-eabi, gcc-arm-none-eabi, libnewlib-arm-none-eabi, avrdude, dfu-programmer, dfu-util, teensy-loader-cli, libhidapi-hidraw0, libusb-dev pyserial
x-python3-version: >= 3.7 packages = find:
udev-rules: debian/50-qmk.rules python_requires = >=3.9
[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
@@ -65,13 +72,13 @@ continuation_indent_width = 4
dedent_closing_brackets = True dedent_closing_brackets = True
disable_ending_comma_heuristic = False disable_ending_comma_heuristic = False
each_dict_entry_on_separate_line = True each_dict_entry_on_separate_line = True
i18n_comment = i18n_comment =
i18n_function_call = i18n_function_call =
indent_blank_lines = False indent_blank_lines = False
indent_dictionary_value = True indent_dictionary_value = True
indent_width = 4 indent_width = 4
join_multiple_lines = False join_multiple_lines = False
no_spaces_around_selected_binary_operators = no_spaces_around_selected_binary_operators =
spaces_around_default_or_named_assign = False spaces_around_default_or_named_assign = False
spaces_around_power_operator = False spaces_around_power_operator = False
spaces_before_comment = 2 spaces_before_comment = 2
-69
View File
@@ -1,69 +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==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.4.2",
"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"
]
)
+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('BRANCH_NAME', 'main')
gh_workflow_ids = environ.get('WORKFLOW_IDS', 'all-trigger.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)