aboutsummaryrefslogtreecommitdiff
path: root/docs/cli.md
diff options
context:
space:
mode:
authorskullydazed <skullydazed@users.noreply.github.com>2019-09-22 13:25:33 -0700
committerGitHub <noreply@github.com>2019-09-22 13:25:33 -0700
commitd569f0877155efc752994f8a21f5cf001f9d6ae6 (patch)
treeeb58a3e3f916d6d938d8f05742d48919c053a579 /docs/cli.md
parent2f49cae9bcbdd94431659727ef75cfd30f557da8 (diff)
downloadqmk_firmware-d569f0877155efc752994f8a21f5cf001f9d6ae6.tar.gz
qmk_firmware-d569f0877155efc752994f8a21f5cf001f9d6ae6.zip
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
Diffstat (limited to 'docs/cli.md')
-rw-r--r--docs/cli.md114
1 files changed, 106 insertions, 8 deletions
diff --git a/docs/cli.md b/docs/cli.md
index 4b8472b19..cb609e2a9 100644
--- a/docs/cli.md
+++ b/docs/cli.md
@@ -4,22 +4,70 @@ This page describes how to setup and use the QMK CLI.
4 4
5# Overview 5# Overview
6 6
7The QMK CLI makes building and working with QMK keyboards easier. We have provided a number of commands to help you work with QMK: 7The QMK CLI makes building and working with QMK keyboards easier. We have provided a number of commands to simplify and streamline tasks such as obtaining and compiling the QMK firmware, creating keymaps, and more.
8 8
9* `qmk compile` 9* [Global CLI](#global-cli)
10* `qmk doctor` 10* [Local CLI](#local-cli)
11* [CLI Commands](#cli-commands)
11 12
12# Setup 13# Requirements
13 14
14Simply add the `qmk_firmware/bin` directory to your `PATH`. You can run the `qmk` commands from any directory. 15The CLI requires Python 3.5 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt).
16
17# Global CLI
18
19QMK provides an installable CLI that can be used to setup your QMK build environment, work with QMK, and which makes working with multiple copies of `qmk_firmware` easier. We recommend installing and updating this periodically.
20
21## Install Using Homebrew (macOS, some Linux)
22
23If you have installed [Homebrew](https://brew.sh) you can tap and install QMK:
24
25```
26brew tap qmk/qmk
27brew install qmk
28export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
29qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
30```
31
32## Install Using easy_install or pip
33
34If your system is not listed above you can install QMK manually. First ensure that you have python 3.5 (or later) installed and have installed pip. Then install QMK with this command:
35
36```
37pip3 install qmk
38export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
39qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
40```
41
42## Packaging For Other Operating Systems
43
44We are looking for people to create and maintain a `qmk` package for more operating systems. If you would like to create a package for your OS please follow these guidelines:
45
46* Follow best practices for your OS when they conflict with these guidelines
47 * Documment why in a comment when you do deviate
48* Install using a virtualenv
49* Instruct the user to set the environment variable `QMK_HOME` to have the firmware source checked out somewhere other than `~/qmk_firmware`.
50
51# Local CLI
52
53If you do not want to use the global CLI there is a local CLI bundled with `qmk_firmware`. You can find it in `qmk_firmware/bin/qmk`. You can run the `qmk` command from any directory and it will always operate on that copy of `qmk_firmware`.
54
55**Example**:
15 56
16``` 57```
17export PATH=$PATH:$HOME/qmk_firmware/bin 58$ ~/qmk_firmware/bin/qmk hello
59Ψ Hello, World!
18``` 60```
19 61
20You may want to add this to your `.profile`, `.bash_profile`, `.zsh_profile`, or other shell startup scripts. 62## Local CLI Limitations
21 63
22# Commands 64There are some limitations to the local CLI compared to the global CLI:
65
66* The local CLI does not support `qmk setup` or `qmk clone`
67* The local CLI always operates on the same `qmk_firmware` tree, even if you have multiple repositories cloned.
68* The local CLI does not run in a virtualenv, so it's possible that dependencies will conflict
69
70# CLI Commands
23 71
24## `qmk compile` 72## `qmk compile`
25 73
@@ -46,3 +94,53 @@ This command formats C code using clang-format. Run it with no arguments to form
46``` 94```
47qmk cformat [file1] [file2] [...] [fileN] 95qmk cformat [file1] [file2] [...] [fileN]
48``` 96```
97
98## `qmk config`
99
100This command lets you configure the behavior of QMK. For the full `qmk config` documentation see [CLI Configuration](cli_configuration.md).
101
102**Usage**:
103
104```
105qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
106```
107
108## `qmk doctor`
109
110This command examines your environment and alerts you to potential build or flash problems.
111
112**Usage**:
113
114```
115qmk doctor
116```
117
118## `qmk new-keymap`
119
120This command creates a new keymap based on a keyboard's existing default keymap.
121
122**Usage**:
123
124```
125qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
126```
127
128## `qmk pyformat`
129
130This command formats python code in `qmk_firmware`.
131
132**Usage**:
133
134```
135qmk pyformat
136```
137
138## `qmk pytest`
139
140This command runs the python test suite. If you make changes to python code you should ensure this runs successfully.
141
142**Usage**:
143
144```
145qmk pytest
146```