Compare commits

..

65 Commits

Author SHA1 Message Date
zvecr 8d6a53d792 Add userspace-setup subcommand 2024-11-14 21:04:48 +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
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
19 changed files with 300 additions and 70 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 1.1.0
current_version = 1.1.6
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@v3
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 --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@v3
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.0.0
uses: docker/build-push-action@v6.9.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@v3
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.0.0
uses: docker/build-push-action@v6.9.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.0'
__version__ = '1.1.6'
+51 -1
View File
@@ -1,8 +1,9 @@
"""Useful helper functions.
"""
import os
import json
from platformdirs import user_data_dir
from functools import lru_cache
from importlib.util import find_spec
from pathlib import Path
from milc import cli
@@ -44,6 +45,10 @@ def find_qmk_firmware():
return path.resolve()
return path
hidden_home = Path(user_data_dir('qmk_cli', 'QMK')) / 'qmk_firmware'
if hidden_home.exists():
return hidden_home
return Path.home() / 'qmk_firmware'
@@ -58,3 +63,48 @@ 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=2)
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'
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()
+8 -7
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, is_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,9 +45,9 @@ 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', '')
@@ -60,7 +59,9 @@ def main():
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()
+1
View File
@@ -6,3 +6,4 @@ from . import clone # noqa
from . import console # noqa
from . import env # noqa
from . import setup # noqa
from . import userspace # noqa
+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)
+70
View File
@@ -0,0 +1,70 @@
"""Setup qmk_userspace on your computer.
"""
import os
import sys
from pathlib import Path
from platformdirs import user_data_dir
from milc import cli
from milc.questions import yesno
from qmk_cli.git import git_clone
from qmk_cli.helpers import find_qmk_firmware, is_qmk_firmware, is_qmk_userspace
default_base = 'https://github.com'
default_fork = 'qmk/qmk_userspace'
default_branch = 'main'
@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)
@cli.argument('-b', '--branch', arg_only=True, default=default_branch, help='The branch to clone. Default: %s' % default_branch)
@cli.argument('-H', '--home', arg_only=True, default=Path(os.environ['QMK_USERSPACE']), type=Path, help='The location for qmk_userspace. Default: %s' % os.environ['QMK_HOME'])
@cli.argument('fork', arg_only=True, default=default_fork, nargs='?', help='The qmk_userspace fork to clone. Default: %s' % default_fork)
@cli.subcommand('Setup your computer for qmk_userspace.')
def userspace_setup(cli):
"""Guide the user through setting up their QMK environment.
"""
# Sanity checks
if cli.args.yes and cli.args.no:
cli.log.error("Can't use both --yes and --no at the same time.")
exit(1)
if is_qmk_userspace(cli.args.home):
cli.log.info(f'Found qmk_userspace at {cli.args.home}.')
else:
cli.log.error('Could not find qmk_userspace!')
if yesno('Would you like to clone qmk_userspace?'):
git_url = f'{cli.args.baseurl}/{cli.args.fork}'
if not git_clone(git_url, cli.args.home, cli.args.branch):
exit(1)
else:
cli.log.warning('Not cloning qmk_userspace due to user input or --no flag.')
qmk_firmware = find_qmk_firmware()
if is_qmk_firmware(qmk_firmware):
cli.log.info(f'Found qmk_firmware at {qmk_firmware}.')
else:
cli.log.error('Could not find qmk_firmware!')
if yesno('Would you like to clone qmk_firmware?'):
git_url = f'{cli.args.baseurl}/qmk/qmk_firmware'
hidden_home = Path(user_data_dir('qmk_cli', 'QMK')) / 'qmk_firmware'
if not git_clone(git_url, hidden_home, 'master'):
exit(1)
else:
cli.log.warning('Not cloning qmk_firmware due to user input or --no flag.')
# Run `qmk doctor` to check the rest of the environment out
if cli.args.home.exists():
color = '--color' if cli.config.general.color else '--no-color'
unicode = '--unicode' if cli.config.general.unicode else '--no-unicode'
doctor_command = [Path(sys.argv[0]).as_posix(), color, unicode, 'doctor']
if cli.args.no:
doctor_command.append('-n')
if cli.args.yes:
doctor_command.append('-y')
cli.run(doctor_command, stdin=None, capture_output=False, cwd=cli.args.home)
+13 -12
View File
@@ -9,19 +9,19 @@ ignore = E501,E226
[metadata]
name = qmk
version = 1.1.0
version = 1.1.6
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,22 +35,23 @@ 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
jsonschema>=4
pygments
qmk-dotty-dict
pillow
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]
@@ -71,13 +72,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'}