Compare commits

..

66 Commits

Author SHA1 Message Date
QMK Bot b6bc144e9e New release: 1.1.6 → 1.1.7 2025-04-21 23:39:00 +00:00
Agathe 93e629608e setup.cfg: drop setuptools dependency (#187)
The setuptools dependency is not needed in this file because setuptools
will be installed from the pyproject.toml file. Since the project does
not use anything from the setuptools package, remove it as a dependency.

This fixes the following bug in Debian:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1083736
2025-04-21 19:18:46 +01:00
Nick Brassel cacd0fabbc Merge pull request #203 from qmk/windows-uv-compat 2025-04-22 00:14:36 +10:00
Nick Brassel d9f9b5a27d Path characters. 2025-04-11 22:03:14 +10:00
Nick Brassel 4d4892f58a Windows uv compat. 2025-03-31 14:18:39 +11:00
dependabot[bot] ffe20fb63e Bump docker/build-push-action from 6.13.0 to 6.15.0 (#200) 2025-03-02 17:38:01 +11:00
dependabot[bot] b384f871e8 Bump docker/build-push-action from 6.9.0 to 6.13.0 (#196)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.9.0 to 6.13.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.9.0...v6.13.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>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-01 13:28:19 +00:00
Joel Challis f2b8522c89 Fix test_cli_win test matrix (#197) 2025-02-01 13:12:55 +00:00
Joel Challis 75dcb0e475 Correct use of lru_cache for helpers (#189) 2024-11-15 06:51:59 +00:00
Nick Brassel 1e98a2e459 Broken CI. 2024-11-15 06:42:33 +11:00
Nick Brassel c53fb88479 Merge pull request #186 from qmk/found-repo-prompt 2024-11-15 06:14:09 +11:00
Nick Brassel fed1e39611 Merge pull request #168 from qmk/userspace1 2024-11-15 06:13:00 +11:00
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
zvecr ae45bdeb02 Update 'qmk env' 2024-10-27 05:00:54 +00:00
zvecr d20af71118 Automatically configure userspace at runtime 2024-10-27 05:00:54 +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
fauxpark 27a97e4ebf qmk setup: ask user what to do if repo already exists 2024-10-27 15:52:52 +11: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
17 changed files with 237 additions and 71 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 1.1.1
current_version = 1.1.7
commit = True
tag = True
tag_name = {new_version}
+32 -8
View File
@@ -7,20 +7,41 @@ on:
pull_request:
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:
needs: test_cli_base_container
runs-on: ${{ matrix.os }}
env:
QMK_HOME: ~/qmk_firmware
strategy:
matrix:
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:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
@@ -28,29 +49,32 @@ jobs:
run: ./ci_tests -a
test_cli_win:
needs: test_cli_base_container
runs-on: windows-latest
env:
QMK_HOME: $HOME/qmk_firmware
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: (MSYS2) Setup and install dependencies
uses: msys2/setup-msys2@v2
with:
update: true
install: git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python-pip mingw-w64-x86_64-python-pillow
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
shell: msys2 {0}
run: |
python3 -m pip install -U setuptools wheel
python3 -m pip install --break-system-packages --force-reinstall --upgrade pip
- name: (MSYS2) Install QMK CLI from source
shell: msys2 {0}
run: |
python3 -m pip install -U build
python3 -m build
python3 -m pip install dist/qmk-*.tar.gz
python3 -m pip install --break-system-packages dist/qmk-*.tar.gz
- name: (MSYS2) Run qmk setup -y
shell: msys2 {0}
run: qmk setup -y
+4 -4
View File
@@ -39,11 +39,11 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# 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).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
uses: github/codeql-action/autobuild@v3
# ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -68,4 +68,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3
+27 -6
View File
@@ -10,26 +10,47 @@ jobs:
steps:
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.7'
- uses: actions/checkout@v3
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@v2.0.0
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@v3.1.1
uses: docker/build-push-action@v6.15.0
with:
context: .
push: true
tags: qmkfm/qmk_cli:latest
platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/qmk/qmk_cli:latest
qmkfm/qmk_cli:latest
+34 -9
View File
@@ -17,47 +17,72 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
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
run: ./ci_tests
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
pip install setuptools wheel
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 }}
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_APITOKEN }}
run: |
python3 -m build
twine upload dist/*
- 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@v2.0.0
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@v3.1.1
uses: docker/build-push-action@v6.15.0
with:
context: .
push: true
tags: qmkfm/qmk_cli:latest
platforms: linux/amd64,linux/arm64
tags: |
ghcr.io/qmk/qmk_cli:latest
qmkfm/qmk_cli:latest
- name: Trigger OS package builds
run: ./trigger_packages
env:
+1 -1
View File
@@ -1,4 +1,4 @@
FROM qmkfm/base_container
FROM ghcr.io/qmk/qmk_base_container:latest
# Copy package in
ADD dist /tmp/dist
+1 -1
View File
@@ -1,5 +1,5 @@
# 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/).
+2 -2
View File
@@ -36,8 +36,8 @@ 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 config -a'" # Test disabled as `milc` at least 1.6.8+ returns False and thus non-zero exit code
#qmk config -a
echo "*** Testing 'qmk setup -n'"
qmk setup -n
+1 -1
View File
@@ -1,3 +1,3 @@
"""A program to help you work with qmk_firmware."""
__version__ = '1.1.1'
__version__ = '1.1.7'
+49 -2
View File
@@ -1,8 +1,8 @@
"""Useful helper functions.
"""
import os
import json
from functools import lru_cache
from importlib.util import find_spec
from pathlib import Path
from milc import cli
@@ -26,7 +26,7 @@ def is_qmk_firmware(qmk_firmware):
return True
@lru_cache(maxsize=2)
@lru_cache(maxsize=1)
def find_qmk_firmware():
"""Look for qmk_firmware in the usual places.
@@ -47,6 +47,7 @@ def find_qmk_firmware():
return Path.home() / 'qmk_firmware'
@lru_cache(maxsize=1)
def in_qmk_firmware():
"""Returns the path to the qmk_firmware we are currently in, or None if we are not inside qmk_firmware.
"""
@@ -58,3 +59,49 @@ def in_qmk_firmware():
# Move up a directory before the next iteration
cur_dir = cur_dir / '..'
cur_dir = cur_dir.resolve()
def is_qmk_userspace(qmk_userspace):
"""Returns True if the given Path() is a qmk_userspace clone.
"""
path = qmk_userspace / 'qmk.json'
if not path.exists():
return False
try:
return 'userspace_version' in json.loads(path.read_text(encoding="UTF-8"))
except json.decoder.JSONDecodeError as e:
return False
@lru_cache(maxsize=1)
def find_qmk_userspace():
"""Look for qmk_userspace in the usual places.
"""
if in_qmk_userspace():
return in_qmk_userspace()
if cli.config.user.overlay_dir:
return Path(cli.config.user.overlay_dir).expanduser().resolve()
if 'QMK_USERSPACE' in os.environ:
path = Path(os.environ['QMK_USERSPACE']).expanduser()
if path.exists():
return path.resolve()
return path
return Path.home() / 'qmk_userspace'
@lru_cache(maxsize=1)
def in_qmk_userspace():
"""Returns the path to the qmk_userspace we are currently in, or None if we are not inside qmk_userspace.
"""
cur_dir = Path.cwd()
while len(cur_dir.parents) > 0:
if is_qmk_userspace(cur_dir):
return cur_dir
# Move up a directory before the next iteration
cur_dir = cur_dir / '..'
cur_dir = cur_dir.resolve()
+21 -8
View File
@@ -13,14 +13,13 @@ from traceback import print_exc
import milc
from . import __version__
from .helpers import find_qmk_firmware, is_qmk_firmware
from .helpers import find_qmk_firmware, is_qmk_firmware, find_qmk_userspace
milc.set_metadata(version=__version__)
milc.cli.milc_options(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
# These must happen after the milc.milc_options() call
import milc.subcommand.config # noqa, must come after milc.milc_options()
@milc.cli.entrypoint('CLI wrapper for running QMK commands.')
@@ -46,21 +45,35 @@ def main():
"""Setup the environment before dispatching to the entrypoint.
"""
# 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('Please upgrade to Python 3.7 or later.')
print('Please upgrade to Python 3.9 or later.')
if 'windows' in platform().lower():
msystem = os.environ.get('MSYSTEM', '')
if 'mingw64' not in sys.executable or 'MINGW64' not in msystem:
# Assume the environment isn't workable by default
env_ok = False
# Check if we're using the mingw64/msys2 environment
if 'mingw64' in sys.executable and 'MINGW64' in msystem:
env_ok = True
# Check if we're using a `uv`-based environment
if '\\uv\\' in sys.executable or '/uv/' in sys.executable:
env_ok = True
# If none of the options above were true, then we're in an unsupported environment. Bomb out.
if not env_ok:
print('ERROR: It seems you are not using the MINGW64 terminal.')
print('Please close this terminal and open a new MSYS2 MinGW 64-bit terminal.')
print('Python: %s, MSYSTEM: %s' % (sys.executable, msystem))
exit(1)
# Environment setup
qmk_userspace = find_qmk_userspace()
qmk_firmware = find_qmk_firmware()
os.environ['QMK_USERSPACE'] = str(qmk_userspace)
os.environ['QMK_HOME'] = str(qmk_firmware)
os.environ['ORIG_CWD'] = os.getcwd()
+2 -1
View File
@@ -23,7 +23,8 @@ def clone(cli):
qmk_firmware = Path(cli.args.destination)
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)
exit(1)
+4 -3
View File
@@ -52,7 +52,8 @@ KNOWN_BOOTLOADERS = {
('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'
('314B', '0106'): 'apm32-dfu: APM32 DFU ISP Mode',
('342D', 'DFA0'): 'wb32-dfu: WB32 Device in DFU Mode'
}
@@ -142,7 +143,7 @@ class MonitorDevice(object):
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)
cli.echo('%s', '%(ts)s%(color)s%(identifier)s:%(index)d{style_reset_all}: %(text)s' % message)
except self.hid.HIDException:
break
@@ -183,7 +184,7 @@ class FindDevices(object):
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)
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']]
+4 -2
View File
@@ -4,16 +4,18 @@ import os
from pathlib import Path
from milc import cli
from qmk_cli.helpers import is_qmk_firmware
from qmk_cli.helpers import is_qmk_firmware, is_qmk_userspace
@cli.argument('var', arg_only=True, default=None, nargs='?', help='Optional variable to query')
@cli.subcommand('Prints environment information.')
def env(cli):
home = os.environ.get('QMK_HOME', "")
userspace = os.environ.get('QMK_USERSPACE', "")
data = {
'QMK_HOME': home,
'QMK_FIRMWARE': home if is_qmk_firmware(Path(home)) else ""
'QMK_FIRMWARE': home if is_qmk_firmware(Path(home)) else "",
'QMK_USERSPACE': userspace if is_qmk_userspace(Path(userspace)) else ""
}
# Now munge the current cli config
+43 -10
View File
@@ -5,9 +5,10 @@ import shlex
import subprocess
import sys
from pathlib import Path
from shutil import rmtree
from milc import cli
from milc.questions import yesno
from milc.questions import choice, question, yesno
from qmk_cli.git import git_clone
from qmk_cli.helpers import is_qmk_firmware
@@ -43,6 +44,17 @@ def git_upstream(destination):
return False
def git_clone_fork(fork, branch, force=False):
if force:
rmtree(cli.args.home)
git_url = '/'.join((cli.args.baseurl, fork))
if git_clone(git_url, cli.args.home, branch):
git_upstream(cli.args.home)
else:
exit(1)
@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', arg_only=True, default=default_base, help='The URL all git operations start from. Default: %s' % default_base)
@@ -61,11 +73,37 @@ def setup(cli):
cli.log.error("Can't use both --yes and --no at the same time.")
exit(1)
# Check on qmk_firmware, and if it doesn't exist offer to check it out.
# Check on qmk_firmware
# If it exists, ask the user what to do with it
# If it doesn't exist, offer to check it out
if is_qmk_firmware(cli.args.home):
cli.log.info('Found qmk_firmware at %s.', str(cli.args.home))
found_prompt = "What do you want to do?"
found_options = [
f"Delete and reclone {cli.args.fork}",
"Delete and clone a different fork",
"Keep it and continue"
]
delete_confirm = "WARNING: This will delete your current qmk_firmware directory. Proceed?"
elif cli.args.home.exists():
found_action = choice(found_prompt, options=found_options, default=2)
if found_action == f"Delete and reclone {cli.args.fork}":
if not yesno(delete_confirm, default=False):
exit(1)
git_clone_fork(cli.args.fork, cli.args.branch, force=True)
elif found_action == "Delete and clone a different fork":
fork_name = question("Enter the name of the fork:", default=cli.args.fork)
branch_name = question("Enter the branch name to clone:", default=cli.args.branch)
if not yesno(delete_confirm, default=False):
exit(1)
git_clone_fork(fork_name, branch_name, force=True)
# Exists (but not an empty dir)
elif cli.args.home.exists() and any(cli.args.home.iterdir()):
path_str = str(cli.args.home)
if cli.args.home.name != 'qmk_firmware':
@@ -77,12 +115,7 @@ def setup(cli):
else:
cli.log.error('Could not find qmk_firmware!')
if yesno(clone_prompt):
git_url = '/'.join((cli.args.baseurl, cli.args.fork))
if git_clone(git_url, cli.args.home, cli.args.branch):
git_upstream(cli.args.home)
else:
exit(1)
git_clone_fork(cli.args.fork, cli.args.branch)
else:
cli.log.warning('Not cloning qmk_firmware due to user input or --no flag.')
@@ -104,4 +137,4 @@ def setup(cli):
if cli.args.yes:
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)
+10 -11
View File
@@ -9,19 +9,19 @@ ignore = E501,E226
[metadata]
name = qmk
version = 1.1.1
version = 1.1.7
author = skullydazed
author_email = skullydazed@gmail.com
description = A program to help users work with QMK Firmware.
long_description = file: README.md
long_description_content_type = text/markdown
license = MIT License
project_urls =
project_urls =
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 =
classifiers =
Development Status :: 3 - Alpha
Environment :: Console
Intended Audience :: Developers
@@ -35,11 +35,10 @@ classifiers =
Topic :: Utilities
[options]
install_requires =
install_requires =
hid
milc>=1.4.2
milc>=1.9.0
pyusb
setuptools>=45
# qmk_firmware packages
dotty-dict
hjson
@@ -48,10 +47,10 @@ install_requires =
pygments
pyserial
packages = find:
python_requires = >=3.7
python_requires = >=3.9
[options.entry_points]
console_scripts =
console_scripts =
qmk = qmk_cli.script_qmk:main
[yapf]
@@ -72,13 +71,13 @@ continuation_indent_width = 4
dedent_closing_brackets = True
disable_ending_comma_heuristic = False
each_dict_entry_on_separate_line = True
i18n_comment =
i18n_function_call =
i18n_comment =
i18n_function_call =
indent_blank_lines = False
indent_dictionary_value = True
indent_width = 4
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_power_operator = False
spaces_before_comment = 2
+1 -1
View File
@@ -12,7 +12,7 @@ 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', 'debian-buster-publish.yml,fedora-32-publish.yml,ubuntu-focal-publish.yml').split(',')
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'}