Commit Graph

532 Commits (9dbee3e23d28e5f61384bbb5650505a572022341)

Author SHA1 Message Date
fauxpark fb02593bd4 Use os.chdir for `qmk docs` instead of a custom HTTP request handler (#7493) 2019-11-29 15:45:22 -08:00
Erovia 7e7eb69edf MILC: Add support for hidden subcommands (#7034)
* MILC: Add support for hidden subcommands

Subcommands with 'hidden=True' will not show up in the help output, but
will work as any other subcommands.

* Hide those hidden submodules, for real now

* Rebase on latest MILC
2019-11-21 12:52:00 -08:00
skullydazed f7bdc54c69
Add flake8 to our test suite and fix all errors (#7379)
* Add flake8 to our test suite and fix all errors

* Add some documentation
2019-11-20 14:54:18 -08:00
skullydazed 9c58da6b12
Improve a number of things about how MILC operates (#7344)
* Pull in updates for MILC

* Remove the shadow argparser
* Make it easier to reason about arguments and how they're translated into the config tree
* Populate self.config during init to support setting user.qmk_home for the global CLI
* Remove the short argument -c so that we can unambiguously determine the config file location without doing full argument processing
* Remove the --save-config option as it's a little confusing anyway
* Use Pathlib for path manipulation

* Fix commands with no arguments
2019-11-18 14:54:50 -08:00
QMK Bot 7891de7f6d format code according to conventions [skip ci] 2019-11-16 07:10:19 +00:00
jorgemanzo 897888db41 Add CLI command for flashing a keyboard
A new CLI subcommand was added, flash, which behaves very similar to the already present compile CLI comamnd, but with the added ability to target a bootloader. The command is used like so: qmk flash [-h] [-b] [-kb KEYBOARD] [-km KEYMAP] [-bl BOOTLOADER] [filename].

A -kb <keyboard> and -km <keymap> is expected, or a configurator export JSON filename. A bootloader can be specified using -bl <target>, and if left unspecified, the target is assumed to be :flash. -bl can be used to list the available bootloaders.

If -km <keymap> is provided, but no -kb <keyboard>, then a message is printed suggesting the user to run qmk list_keyboards.
2019-11-15 23:06:07 -08:00
QMK Bot a4c2a9b083 format code according to conventions [skip ci] 2019-11-13 05:24:56 +00:00
Cody Bender 7329c2d02d Add cli convert subcommand, from raw KLE to JSON (#6898)
* Add initial pass at KLE convert

* Add cli log on convert

* Move kle2xy, add absolute filepath arg support

* Add overwrite flag, and context sensitive conversion

* Update docs/cli.md

* Fix converter.py typo

* Add convert unit test

* Rename to kle2qmk

* Rename subcommand

* Rename subcommand to kle2json

* Change tests to cover rename

* Rename in __init__.py

* Update CLI docs with new subcommand name

* Fix from suggestions in PR #6898

* Help with cases of case sensitivity

* Update cli.md

* Use angle brackets to indicate required option

* Make the output text more accurate
2019-11-12 20:55:41 -08:00
skullY 00fb1bd1f0 Make generating keymap.c from JSON more reliable 2019-11-12 20:37:28 -08:00
skullY 79edb7c594 Small CLI cleanups
* yapf changes
* Fix the cformat test
* Make the normpath test work when run from /
* `qmk config`: Mark `--read-only` as arg_only
2019-11-12 18:41:38 -08:00
skullY d1b6c11b7f When checking program returncodes treat both 0 and 1 as installed 2019-11-12 18:40:24 -08:00
skullY 5421ba11de Add support for newer versions of clang-format, if installed 2019-11-12 18:39:42 -08:00
St. John Johnson e0e26957d4 Fix the CLI docs (#6979)
- Sort the commands alphabetically
- Add missing `json_keymap`
- Correct underscore to dash
2019-10-29 01:24:36 +00:00
Erovia a5a31a5fc0 MILC: Use dashes instead of underscores for subcommands
The subcommand functions' name follows the Python convention of using
snake case, but looks odd on the command line.
Fix it by converting underscores to dashes, eg.: list_keyboards ->
list-keyboards.
2019-10-23 22:46:30 -07:00
Harry Wada f64d9b0621 Fix detection of ModemManager (#7076) 2019-10-20 15:33:58 +01:00
fauxpark 076d8babbb [CLI] `qmk docs` graceful shutdown on Ctrl+C (#6989) 2019-10-11 21:41:58 -07:00
fauxpark 2707652c98 [Docs] CLI command to serve docs locally (#6956)
* CLI command to serve docs locally

* Document it

* Default port

* Use `with` and subclass `SimpleHTTPRequestHandler` to set working dir

* Apply suggestions from code review

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

* Update docs/cli.md
2019-10-08 11:06:26 -07:00
Dan McClain f04e58dad6 [CLI] Add `qmk list_keyboards` (#6927)
`list_keyboards` replicates the `make list-keyboards` by globbing for all paths
that include `rules.mk` and then removing the paths that include `keymaps`.

This basis of this cli command could be reused in the future as a util, but is
not done so here since this would be the only place that would use it currently

Resolves #6911
2019-10-07 11:32:30 -07:00
St. John Johnson 78f01eef2e Use `keymap` instead of `username` variable for `qmk new_keymap` (#6885)
Username is not defined and this causes `qmk new_keymap` to error.  This
appears to have originated from a partial update in
https://github.com/qmk/qmk_firmware/pull/6708/files#diff-d5208bcbc79aa428556a743b6ff41086.  This change completes the migration from `username` to `keymap`
2019-10-05 23:41:15 -07:00
Ayman Bagabas 9067dc817a Fix qmk doctor 'bytes-like object is required' on linux
This fixes the following issue related to encoding on linux systems. Add
`universal_newlines=True` to subprocess.

<class 'TypeError'>
☒ a bytes-like object is required, not 'str'
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/milc.py", line 564, in __call__
    return self.__call__()
  File "/usr/local/lib/python3.7/site-packages/milc.py", line 569, in __call__
    return self._entrypoint(self)
  File "$HOME/qmk_firmware/lib/python/qmk/cli/doctor.py", line 56, in doctor
    for line in mm_check.stdout.split('\n'):
TypeError: a bytes-like object is required, not 'str'
2019-10-03 10:27:20 -07:00
skullydazed d569f08771
Configuration system for CLI (#6708)
* Rework how bin/qmk handles subcommands

* qmk config wip

* Code to show all configs

* Fully working `qmk config` command

* Mark some CLI arguments so they don't pollute the config file

* Fleshed out config support, nicer subcommand support

* sync with installable cli

* pyformat

* Add a test for subcommand_modules

* Documentation for the `qmk config` command

* split config_token on space so qmk config is more predictable

* Rework how subcommands are imported

* Document `arg_only`

* Document deleting from CLI

* Document how multiple operations work

* Add cli config to the doc index

* Add tests for the cli commands

* Make running the tests more reliable

* Be more selective about building all default keymaps

* Update new-keymap to fit the new subcommand style

* Add documentation about writing CLI scripts

* Document new-keyboard

* Update docs/cli_configuration.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update docs/cli_development.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update docs/cli_development.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Update docs/cli_development.md

Co-Authored-By: noroadsleft <18669334+noroadsleft@users.noreply.github.com>

* Address yan's comments.

* Apply suggestions from code review

suggestions from @noahfrederick

Co-Authored-By: Noah Frederick <code@noahfrederick.com>

* Apply suggestions from code review

Co-Authored-By: Noah Frederick <code@noahfrederick.com>

* Remove pip3 from the test runner
2019-09-22 13:25:33 -07:00
Kenny Hoang 595232ec98 Created new_keymap.py, python version of new_keymap.sh (#6066)
* Created python version of new_keymap.sh: new_keymap.py

* Updated usage message

* Updated new_keymap.py to use python3.5+ syntax & be more similar to new_keyboard.sh

* Updated complete message

* Updated usage in argparser and removed incorrect usage_message

* Reverted the fstrings back to strings that use .format() & updated docstring convention

* Added helper to recursively cd .. until at qmk_firmware root directory

* Revert "Added helper to recursively cd .. until at qmk_firmware root directory"

This reverts commit 61a0ff3b25f91901287bec8d58eb51a1f126e2ad.

* Updated new_keymap.py to use printf-style format strings

* First draft lib/python/qmk/cli/new/keymap.py with milc

* Removed shebang & syspath appending lines

* Added optional args & resolved some cr comemnts

* Added a docstring and updated strings
2019-09-10 05:14:25 -07:00
skullY deb6fa6a87 Add a command to format python code 2019-09-07 07:58:41 -07:00
skullY 533d6d6a46 Make the modem manager check more pythonic 2019-09-07 07:58:41 -07:00
skullY c7eede2249 run yapf on the code 2019-09-07 07:58:41 -07:00
skullY 5b7a5b2a76 Setup a python test framework 2019-09-07 07:58:41 -07:00
skullY 2d688ad14e readability enhancements 2019-08-31 08:50:25 -07:00
skullY 1784d1bfac Add support for passing files at the command line 2019-08-31 08:50:25 -07:00
skullY 9547774962 CLI command to format C code 2019-08-31 08:50:25 -07:00
skullydazed f22c5c17b6
Refactor `qmk compile-json` to `qmk compile` (#6592) 2019-08-25 11:58:24 -07:00
skullydazed 7d557a0514
Fix compiling json files. (#6340) 2019-07-15 15:12:35 -07:00
skullydazed a25dd58bc5
QMK CLI and JSON keymap support (#6176)
* Script to generate keymap.c from JSON file.

* Support for keymap.json

* Add a warning about the keymap.c getting overwritten.

* Fix keymap generating

* Install the python deps

* Flesh out more of the python environment

* Remove defunct json2keymap

* Style everything with yapf

* Polish up python support

* Hide json keymap.c into the .build dir

* Polish up qmk-compile-json

* Make milc work with positional arguments

* Fix a couple small things

* Fix some errors and make the CLI more understandable

* Make the qmk wrapper more robust

* Add basic QMK Doctor

* Clean up docstrings and flesh them out as needed

* remove unused compile_firmware() function
2019-07-15 12:14:27 -07:00