Commit Graph

186 Commits (568865597142fd0fd48ba9b449c4560616472127)

Author SHA1 Message Date
Zach White 4d33d72975
New command: qmk lint (#10761)
* Basic qmk lint command

* check for keymap readme

* change the workflow from qmk info to qmk lint

* add a strict mode

* parsing -> parse

* document qmk lint

* small info logging cleanup

* Apply suggestions from code review

Co-authored-by: Ryan <fauxpark@gmail.com>

* honor --strict in more places

* change the job name to lint

Co-authored-by: Ryan <fauxpark@gmail.com>
2020-11-07 09:56:08 -08:00
Ryan 7ef98e7f61
CLI: Add `qmk clean` (#10785) 2020-11-04 19:18:47 +00:00
Ryan e69da2db2c
`qmk info`: Add `--ascii` flag (#10793)
* `qmk info`: Add `--ascii` flag

* Fix typo

* Force ASCII for Windows/MSYS2

* Make it gooder

* Remove redundant windows check

* ...And this too

* Make pytest work on Windows
2020-11-02 00:41:01 -08:00
Zach White 0c42f91f4c
Generate api data on each push (#10609)
* add new qmk generate-api command, to generate a complete set of API data.

* Generate api data and push it to the keyboard repo

* fix typo

* Apply suggestions from code review

Co-authored-by: Joel Challis <git@zvecr.com>

* fixup api workflow

* remove file-changes-action

* use a more mainstream github action

* fix yaml error

* Apply suggestions from code review

Co-authored-by: Erovia <Erovia@users.noreply.github.com>

* more uniform date handling

* make flake8 happy

* Update lib/python/qmk/decorators.py

Co-authored-by: Erovia <Erovia@users.noreply.github.com>

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2020-10-25 14:48:44 -07:00
Ryan f9bd9d3b26
c2json: Fix TypeError on MSYS2 (#10709) 2020-10-23 12:21:32 +11:00
Ryan c3ce06c2e7
Fix CLI warning for Massdrop udev rule (#10691) 2020-10-20 04:36:18 +11:00
Zach White 445cd95d17
Improve ANSI support and --no-color (#10537)
* Improve ANSI support and --no-color

* tweak when levelname gets stripped of ansi

* sync with latest milc

* make questions work with both milc versions

* pyformat
2020-10-17 21:01:11 -07:00
Ryan 1a2a838bc2
[CLI] Remove check for Input Club boards (#10636) 2020-10-18 02:44:38 +11:00
Erovia 459f672879
CLI: Fix stripping of `ANY` from Configurator exports (#10585)
058737f broke it ¯\_(ツ)_/¯
2020-10-09 18:46:49 +01:00
Ryan 7229997e7d
CLI: Fix MCU lists for `qmk info` (#10574) 2020-10-09 11:43:07 +11:00
Erovia 058737f116
[CLI] Add c2json (#8817)
* Basic keymap parsing finally works

* Add 'keymap.json' creation to the qmk.keymap module

* Add tests and fix formatting

* Fix/exclude flake8 errors

* Convert keymap.c to valid keymap.json

* Fix some errors

* Add tests

* Finalize keymap.json creation, add json template

* Add docs

* Move pygments to the standard requirements

* Add support for nameless layers, fix tests

* Fix things after rebase

* Add missing 'keymap' value.

* Fix missing layer numbers from advanced keycodes

Buckwich noticed that if the advanced keycode / layer toggling key
contains a number, it goes missing.
Now we properly handle them.
Thx for noticing!

* Apply suggestions from code review

* fixup tests

Co-authored-by: Zach White <skullydazed@drpepper.org>
Co-authored-by: skullY <skullydazed@gmail.com>
2020-10-06 17:10:19 -07:00
Ryan c9a06965c9
Improve LAYOUT macro searching (#9530)
* Improve LAYOUT macro searching

* Apply suggestions from code review

Co-authored-by: Zach White <skullydazed@users.noreply.github.com>

* Adjust signature

* Try to copy the makefile's handling of DEFAULT_FOLDER

* Move it further up, into `info_json()`

* Move it even further up so that keyboard_folder is correct

* Update lib/python/qmk/info.py

Co-authored-by: Zach White <skullydazed@drpepper.org>

* Update lib/python/qmk/info.py

Co-authored-by: Zach White <skullydazed@drpepper.org>

Co-authored-by: Zach White <skullydazed@users.noreply.github.com>
Co-authored-by: Zach White <skullydazed@drpepper.org>
2020-10-06 16:57:40 -07:00
Ryan 2c9ffd4739
CLI: update subcommands to use return instead of exit() (#10323) 2020-10-06 16:46:10 -07:00
Ryan e7acd39b78
Consolidate udev rules into a single file (#9693)
* Consolidate udev rules into a single file

* Update rules in doctor.py

* Simplify doctor rule checking

* Fix errors

* Add TMK "FEED" VID to list of deprecated udev rules

* A comma would be nice

* Split rules back up into bootloaders

* Link to docs page in "missing" case

* Add Pololu VID

* Be more specific about Caterina devices, and add LilyPad PID
2020-09-27 20:36:33 +10:00
Ryan 70fce6564f
Add logic for AT90USBxx7 where needed (#10203) 2020-09-27 20:33:03 +10:00
Ryan 5f23f21216
CLI/Doctor: Print QMK_HOME (#10398) 2020-09-24 15:16:00 +10:00
Ryan bbfb709a6a
Add STM32F401/F411 to ARM_PROCESSORS (#10362) 2020-09-18 20:48:02 -07:00
fauxpark a0305f5e7e Be more specific about Caterina devices, and add LilyPad PID 2020-09-19 05:40:25 +10:00
fauxpark c2a0cebf8b Add Pololu VID 2020-09-19 05:21:33 +10:00
fauxpark ef1b050b32 Link to docs page in "missing" case 2020-09-19 05:21:32 +10:00
fauxpark 4bee445c2f Split rules back up into bootloaders 2020-09-19 05:21:32 +10:00
fauxpark 7921c5d9b8 A comma would be nice 2020-09-19 05:21:31 +10:00
fauxpark 72b1ff5899 Add TMK "FEED" VID to list of deprecated udev rules 2020-09-19 05:21:31 +10:00
fauxpark eee6dd3544 Fix errors 2020-09-19 05:21:31 +10:00
fauxpark 510138f525 Simplify doctor rule checking 2020-09-19 05:21:30 +10:00
fauxpark 07e37c857c Update rules in doctor.py 2020-09-19 05:21:30 +10:00
Sergey Vlasov d00ac5dfb6 Add `st-flash` flash target (#9964)
* Add `st-flash` flash target

Add support for flashing the firmware via the `st-flash` utility from
the STLink Tools package (https://github.com/stlink-org/stlink).

* Add `st-flash` to the `qmk flash -b` output
2020-08-29 14:30:02 -07:00
Nick Brassel 385d49cc39 Initial work for consolidation of ChibiOS platform files (#8327)
* Initial work for consolidation of board files and default ChibiOS configs.

* Migrate F401/F411 black pills for testing.

* Add early init bootloader jump flag.

* Add support for I2C in order to use i2c_scanner keymap.

* Add F401/F411 HSE bypass to get things booting.

* Exempt "hooked" ChibiOS conf files from updater script.

* Fix up ordering for bootloader_defs file check.

* Match previous $(KEYBOARD_PATHS) value for Proton-C, updated for all board configs.
2020-08-29 14:30:02 -07:00
Ryan 0f9b7b9768
Add debug logging to `run()` (#9986) 2020-08-28 08:03:42 -07:00
Ryan 72d3270547
Remove `DESCRIPTION` (#9732) 2020-07-16 15:49:18 +10:00
Ryan db80209e69
Parse version better in `qmk doctor` GCC version checks (#9324) 2020-06-18 19:37:47 +01:00
Erovia a0bf235644
CLI: Add ATmega328 and ATtiny85 to supported CPUs (#9371)
* CLI: Add ATmega328 to supported CPUs

Support for ATmega328 was added in #9043.

* Update lib/python/qmk/constants.py
2020-06-17 15:45:53 -07:00
Zach White 1a5dc278bc
Fix running qmk info without any arguments (#9218) 2020-05-27 09:43:22 +02:00
Zach White a5e749d8cd
Fix the path for generated keymaps (#9213) 2020-05-26 15:18:49 -07:00
Zach White 4ee623fdd5
Fix compiling json files (#9210) 2020-05-26 14:29:48 -07:00
Zach White 751316c344
[CLI] Add a subcommand for getting information about a keyboard (#8666)
You can now use `qmk info` to get information about keyboards and keymaps.

Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2020-05-26 13:05:41 -07:00
Erovia 6501377070
CLI: fix `json2c` subcommand and add/fix tests (#9206)
Co-authored-by: Zach White <skullydazed@users.noreply.github.com>
2020-05-26 17:43:33 +02:00
Erovia 179e5c018f
CLI: Rework submodule checking (#9162) 2020-05-21 21:56:43 +02:00
Erovia 83ebbf57b3
Fix submodule check (#9155) 2020-05-21 10:15:18 +02:00
codecoffeecode f125406700
Adding unit tests for list-keymaps command (#7711)
Co-Authored-By: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-Authored-By: Erovia <Erovia@users.noreply.github.com>
2020-05-16 22:47:07 +02:00
Erovia 6b54f3ce1c CLI: Tune doctor's udev rule checking to match #8750 2020-05-15 12:59:46 -07:00
Keenan Brock c3aaed8dfb
[kle2info] Trim the code in `kle2xy` (#8955)
* [kle2jinfo] use min/max instead of if

This is a slight change.
Before, the key_skel would keep the invalid value for future keys.
I think this is what was actually intended.

* [kle2info] calculate x

x is the current_x * key_size + (key_size/2)
y is the current_y * key_size + (key_size/2)

no reason to track both
2020-05-15 12:09:22 -07:00
Keenan Brock 5c666398d5 kle2info: trim down x and y output
fixes quirks with float implementation.

before:
{"label":"Esc", "x":0.66, "y":1.45}, {"label":"!", "x":1.6600000000000001, "y":1.45}

after:
{"label":"Esc", "x":0.66, "y":1.45}, {"label":"!", "x":1.66, "y":1.45}
2020-04-26 12:20:40 -04:00
Keenan Brock a47915d2d2 kle2json: fix invocation error
resolves an issue while finding the file path

TypeError: unsupported operand type(s) for +: 'PosixPath' and 'str'
2020-04-26 12:19:37 -04:00
skullydazed 66d94dc22a
Move everything to Python 3.6 (#8835) 2020-04-18 22:00:56 +02:00
skullydazed 484c059d86
MILC: Fix setting config values for store_true and store_false (#8813) 2020-04-15 22:49:22 +02:00
Pete Johanson f9bb9ef0b8
CLI: Fix doctor error when can't run `bin/qmk --version`. (#8796) 2020-04-14 16:58:00 +02:00
Pete Johanson 6fb048fdaf CLI: Use `shutil.which` to detect gmake, instead of OS check. 2020-04-13 10:48:27 -07:00
Pete Johanson 06b571aa53 CLI: Invoke gmake on FreeBSD when using `qmk compile`.
* Current makefiles aren't portable, so invoke gmake on FreeBSD.
2020-04-13 10:48:27 -07:00
Erovia 38f14c4174 Don't hide for devs... 2020-04-08 09:31:14 -07:00
Erovia 5cfc3ce02e Rebase on master, hide some other subcommands
The list of hidden subcommands were approved by @skullydazed ;)
Currently hidden if 'user.developer' is not True:

  - cformat
  - docs
  - kle2json
  - pyformat
  - pytest
2020-04-08 09:31:14 -07:00
Erovia c61f016fa4 CLI: Add development mode support
Hide development specific options and don't require dev modules unless
`user.developer` is set to `True`.
2020-04-08 09:31:14 -07:00
skullY b4ef72423e Correctly handle json keymaps with ANY() 2020-04-07 01:34:21 -07:00
Ryan 6de77141a4
Doctor: Add avrdude/dfu-util/dfu-programmer version printing (#8678)
* Doctor: Add avrdude/dfu-util/dfu-programmer version printing

* Extra newline

* Iterate through version checking functions
2020-04-05 18:11:55 +02:00
skullY 2f15cb2126 minor tweaks 2020-04-04 12:43:13 -07:00
Ross Baquir 8af156d976 Fix saving output from avrdude and dfu-programmer 2020-04-04 12:43:13 -07:00
Ross Baquir 70b5015162 Use version_arg in ESSENTIAL_BINARIES dict 2020-04-04 12:43:13 -07:00
Ross Baquir 3fad3854d6 Fixes #8541 by getting version from -dumpversion then --version as fallback 2020-04-04 12:43:13 -07:00
Erovia c89c084146
CLI: More MSYS2 fixes (#8577)
* CLI: More MSYS2 fixes

Now I can fully setup and work with qmk_firmware on an MSYS2
installation without any errors or exceptions.

* Apply suggestions from code review

Co-Authored-By: skullydazed <skullydazed@users.noreply.github.com>

* Some improvements

* Remove unnecessary import

* Remove slow, unused code

Getting the version from GIT was slow on both Windows and Docker.
Until we find a better, faster way, this is removed.

* remove unused imports

* Implement @vomindoraan's suggestions

* refine how we pick the shell to use

* Apply @fauxpark's suggestions

fauxpark investigated the topic of shells in MSYS2 a bit and we come to the conclusion that the safest bet was to just use the user's shell.
Anything more just opens up more edge-cases than it solves.

Co-Authored-By: Ryan <fauxpark@gmail.com>

* Use `platform_id` in doctor

This will bring it in line with the new code.

Co-authored-by: skullydazed <skullydazed@users.noreply.github.com>
Co-authored-by: skullY <skullydazed@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-03-29 14:29:44 +02:00
Erovia 8123dd2649 CLI: Hide json-keymap subcommand, as it's been deprecated. 2020-03-18 10:17:23 -07:00
skullydazed f81b0e35a6
Add decorators for determining keyboard and keymap based on current directory (#8191)
* Use pathlib everywhere we can

* Improvements based on @erovia's feedback

* rework qmk compile and qmk flash to use pathlib

* style

* Remove the subcommand_name argument from find_keyboard_keymap()

* add experimental decorators

* Create decorators for finding keyboard and keymap based on current directory.

Decorators were inspired by @Erovia's brilliant work on the proof of concept.
2020-03-13 15:47:04 -07:00
skullY 799acb2802 use qmk.path.normpath to locate the output file. 2020-03-12 13:48:17 -07:00
skullydazed 2a05d433c9
Rename qmk json-keymap to qmk json2c (#8372) 2020-03-10 13:51:19 -07:00
skullydazed cf40c33c90
Add gcc version detection to qmk doctor (#8338) 2020-03-08 09:21:45 -07:00
Mikkel Jeppesen 4667bc554e
Fixed OS detection such that OSX doesn't take over the world (#8248) 2020-02-26 10:12:13 +01:00
Akaash Suresh b353028ea5
New functionality for cformat (#7893)
Fixing complexity

remove lambda

PR review fixes #1

Removing unneccesary string substitution

Handle -a and specified files

Complexity rewrite, use pathlib
2020-02-22 20:57:19 -08:00
skullydazed c66930445f
Use pathlib everywhere we can (#7872)
* Use pathlib everywhere we can

* Update lib/python/qmk/path.py

Co-Authored-By: Erovia <Erovia@users.noreply.github.com>

* Update lib/python/qmk/path.py

Co-Authored-By: Erovia <Erovia@users.noreply.github.com>

* Improvements based on @erovia's feedback

* rework qmk compile and qmk flash to use pathlib

* style

* Remove the subcommand_name argument from find_keyboard_keymap()

Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2020-02-17 11:42:11 -08:00
Mikkel Jeppesen 0d3f0889c5
Fix os detection in OSX python 3.8 (#8187)
* Fix os detection in osx python 3.8

* oops
2020-02-17 12:18:49 +01:00
skullY 58101cbb73 fix list_keymaps for python 3.5 2020-02-15 15:19:03 -08:00
Erovia 512261b343 Pathlib-ify qmk.keymap.list_keymaps() 2020-02-15 15:19:03 -08:00
Erovia 3db41817e0 Code cleanup, use pathlib, use pytest keyboard
Clean up checks and logics that are unnecessary due to MILC updates.
Use pathlib instead of os.path for readability.
Use the 'pytest' keyboard for the tests.
Add community layout for 'handwired/onekey/pytest' so we can test
community layouts.
2020-02-15 15:19:03 -08:00
Erovia 8eeab1112a Fix commandline parsing and flake8 findings, rebase
Fixed commandline and config parsing. Thx @xplusplus.
Rebased on master and fixed merge conflicts.
2020-02-15 15:19:03 -08:00
Erovia 988bfffca2 Major rework, no regex/globbing, more walking
Instead of using regexes and globbing to find the rules.mk and keymap.c
files, walk the directory tree to find them.
Also, do away with the concept of revision.
2020-02-15 15:19:03 -08:00
Erovia 8ff72d9517 Fix merging community and base keymaps 2020-02-15 15:19:03 -08:00
Erovia 4445e0a459 Return only the unique keymaps 2020-02-15 15:19:03 -08:00
Erovia 3ed1223678 Drop bs4 dependency, update docs, minor improvements 2020-02-15 15:19:03 -08:00
Erovia d257a98cb8 Fix regex for parsing rules.mk files
I don't know why it couldn't put it together before... ¯\_(ツ)_/¯
2020-02-15 15:19:03 -08:00
Erovia f8002828ca Add test for list_keymaps 2020-02-15 15:19:03 -08:00
Erovia 26f53d38d9 Another major refactoring, add documentation
Move all useful functions to the qmk module and use the cli subcommand
as a wrapper around it.
Add both inline comments and documentation.
2020-02-15 15:19:03 -08:00
Erovia f96085af38 Fix output format 2020-02-15 15:19:03 -08:00
Erovia e46cc2db8c Try to figure out revision, drop -rv/--revision argument 2020-02-15 15:19:03 -08:00
Erovia c3b168e6fd Fix help message. 2020-02-15 15:19:03 -08:00
Erovia 62c1bcba71 Get all buildable keymaps for each revision
The command now return all keymaps that's buildable for a
keyboard/revision. If the base directory of a keyboard does not contain
a 'rules.mk' file, nothing is returned. If the base directory contains a
'keymaps' directory, those keycaps will be returned for every revision.
2020-02-15 15:19:03 -08:00
Erovia 057c7d0ffe Major update to work better with revisions
Find the community keymaps supported by each revision.
2020-02-15 15:19:03 -08:00
Erovia 409c610543 CLI: add support for list_keymaps
List all the available keymaps for a given keyboard
2020-02-15 15:19:03 -08:00
Mikkel Jeppesen 310b2f1be4
use replace() over rename() to have cross-platform overwriting (#8148) 2020-02-11 10:37:15 +01:00
Erovia b6e23f974b
Update the flash cli command to use the user config (#8125) 2020-02-08 23:58:28 +01:00
Joel Challis 75e7018f72 CI: Add workflow for CLI testing (#7357)
Create GitHub Actions cli test workflow and remove travis runs of 'qmk pytest'
2020-02-08 13:43:55 +01:00
Cody Bender e77188458f
Add QMK Compile Context Sensitivity (#6884)
* Add context sensitive compile, without config check

* Initial full working state. Plan to refactor

* Refactor loop for simplicity, add comments

* Update docs/cli.md with qmk compile examples

* Simplify path for keyboard derivation

* Update path to use path.join instead of concat

* Refactor keyboard path, the skully way

* Add in keymap folder support

* Add /layouts compile support

* Update docs/cli.md with empty compile in layouts

* Add comments to compile.py

* Update docs for clarity, and fix compile error typo

* Fix config option compile

* Fix layout compile and failure mode

* Add rules.mk check

* Fix variable names for global config

* Add in_layout priority

* Remove default fallback in favor of throw, update docs

* Add keymap folder context

* Fix formatting

* Add os import

* Convert to create_make_command

* Fix Travis lint errors

* Remove blank line with whitespace

* Add blank lines for readability

* Remove unnecessary config logic

* Update Docs to add flash

Co-Authored-By: skullydazed <skullydazed@users.noreply.github.com>

* Shift config precedence to MILC

Co-authored-by: skullydazed <skullydazed@users.noreply.github.com>
2020-02-07 21:48:37 +01:00
skullydazed 5780c94423
Improve the functionality of qmk.questions (#8020)
* wip

* tested and working

* remove unused import

* Update lib/python/qmk/questions.py

Co-Authored-By: Erovia <Erovia@users.noreply.github.com>

* fix flake8 errors

Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2020-02-03 09:04:58 -08:00
Joel Challis 5b91c3e0a0
Fix cformat processing files within ignore folders (#8063) 2020-02-02 16:33:17 +00:00
Mikkel Jeppesen 197a401be6 Qmk doctor os check to support newer msys2/w10 installations (#8031)
* Fixed OS detection on newer MSYS installations

* made OS sting lower case
2020-01-28 22:21:00 +01:00
skullydazed 5e65af3a76 Beef up how `qmk doctor` works. (#7375)
* Beef up how `qmk doctor` works.

* improve the `git submodule status` parsing. h/t @erovia

* Fix whitespace and imports

* yapf

* Add documentation for the new doctor functionality

* Replace type_unchanged() with str()

* remove unused modules

* Update lib/python/qmk/cli/doctor.py

Co-Authored-By: Erovia <Erovia@users.noreply.github.com>

Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2020-01-24 20:31:16 +01:00
Joel Challis 8e500c3670 Align cformat rules with current CI implementation (#7936)
* Align cformat rules with current CI implementation

* Optimise file walking
2020-01-21 18:21:14 -08:00
Erovia 1f86e8ae9a Fix attribute heritance for long commands.
This is needed for inheritance to work with commands that have dashes in
their names.
2020-01-19 21:29:36 -08:00
Erovia e7f6e90a22 Fix commandline arg merging, small improvements
Commandline args should be merged with the submodule's config.
Compare config values to None instead of False, so empty lines and False
can be used as values.
2020-01-19 21:29:36 -08:00
Erovia 20290a1cff MILC: Fix/complete attribute heritance
If an undefined attribute of a submodule is accessed, fall back to
same attribute of the submodule's parent.
2020-01-19 21:29:36 -08:00
skullY 81ec3b5f81 yapf and style 2020-01-11 12:18:30 -08:00
Erovia 8f47e62b36 Make the udev rules easier to read and manage 2020-01-11 12:18:30 -08:00
Erovia e905d86fc5 Fix Pro Micro's and its bootloader's name 2020-01-11 12:18:30 -08:00