Browse Source

Align new-keymap with new-keyboard (#19229)

Joel Challis 3 years ago
parent
commit
32dabd5320
2 changed files with 40 additions and 18 deletions
  1. 1 1
      docs/newbs_building_firmware.md
  2. 39 17
      lib/python/qmk/cli/new/keymap.py

+ 1 - 1
docs/newbs_building_firmware.md

@@ -28,7 +28,7 @@ If you did not configure your environment, or you have multiple keyboards, you c
 
 
 Look at the output from that command, you should see something like this:
 Look at the output from that command, you should see something like this:
 
 
-    Ψ <github_username> keymap directory created in: /home/me/qmk_firmware/keyboards/clueboard/66/rev3/keymaps/<github_username>
+    Ψ Created a new keymap called <github_username> in: /home/me/qmk_firmware/keyboards/clueboard/66/rev3/keymaps/<github_username>.
 
 
 This is the location of your new `keymap.c` file.
 This is the location of your new `keymap.c` file.
 
 

+ 39 - 17
lib/python/qmk/cli/new/keymap.py

@@ -1,12 +1,32 @@
 """This script automates the copying of the default keymap into your own keymap.
 """This script automates the copying of the default keymap into your own keymap.
 """
 """
 import shutil
 import shutil
-from pathlib import Path
 
 
-import qmk.path
+from milc import cli
+from milc.questions import question
+
+from qmk.path import is_keyboard, keymap
+from qmk.git import git_get_username
 from qmk.decorators import automagic_keyboard, automagic_keymap
 from qmk.decorators import automagic_keyboard, automagic_keymap
 from qmk.keyboard import keyboard_completer, keyboard_folder
 from qmk.keyboard import keyboard_completer, keyboard_folder
-from milc import cli
+
+
+def prompt_keyboard():
+    prompt = """{fg_yellow}Select Keyboard{style_reset_all}
+If you`re unsure you can view a full list of supported keyboards with {fg_yellow}qmk list-keyboards{style_reset_all}.
+
+Keyboard Name? """
+
+    return question(prompt)
+
+
+def prompt_user():
+    prompt = """
+{fg_yellow}Name Your Keymap{style_reset_all}
+Used for maintainer, copyright, etc
+
+Your GitHub Username? """
+    return question(prompt, default=git_get_username())
 
 
 
 
 @cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='Specify keyboard name. Example: 1upkeyboards/1up60hse')
 @cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='Specify keyboard name. Example: 1upkeyboards/1up60hse')
@@ -17,32 +37,34 @@ from milc import cli
 def new_keymap(cli):
 def new_keymap(cli):
     """Creates a new keymap for the keyboard of your choosing.
     """Creates a new keymap for the keyboard of your choosing.
     """
     """
-    # ask for user input if keyboard or keymap was not provided in the command line
-    keyboard = cli.config.new_keymap.keyboard if cli.config.new_keymap.keyboard else input("Keyboard Name: ")
-    keymap = cli.config.new_keymap.keymap if cli.config.new_keymap.keymap else input("Keymap Name: ")
+    cli.log.info('{style_bright}Generating a new keymap{style_normal}')
+    cli.echo('')
 
 
-    # generate keymap paths
-    kb_path = Path('keyboards') / keyboard
-    keymap_path = qmk.path.keymap(keyboard)
-    keymap_path_default = keymap_path / 'default'
-    keymap_path_new = keymap_path / keymap
+    # ask for user input if keyboard or keymap was not provided in the command line
+    kb_name = cli.config.new_keymap.keyboard if cli.config.new_keymap.keyboard else prompt_keyboard()
+    user_name = cli.config.new_keymap.keymap if cli.config.new_keymap.keymap else prompt_user()
 
 
     # check directories
     # check directories
-    if not kb_path.exists():
-        cli.log.error('Keyboard %s does not exist!', kb_path)
+    if not is_keyboard(kb_name):
+        cli.log.error(f'Keyboard {{fg_cyan}}{kb_name}{{fg_reset}} does not exist! Please choose a valid name.')
         return False
         return False
 
 
+    # generate keymap paths
+    km_path = keymap(kb_name)
+    keymap_path_default = km_path / 'default'
+    keymap_path_new = km_path / user_name
+
     if not keymap_path_default.exists():
     if not keymap_path_default.exists():
-        cli.log.error('Keyboard default %s does not exist!', keymap_path_default)
+        cli.log.error(f'Default keymap {{fg_cyan}}{keymap_path_default}{{fg_reset}} does not exist!')
         return False
         return False
 
 
     if keymap_path_new.exists():
     if keymap_path_new.exists():
-        cli.log.error('Keymap %s already exists!', keymap_path_new)
+        cli.log.error(f'Keymap {{fg_cyan}}{user_name}{{fg_reset}} already exists! Please choose a different name.')
         return False
         return False
 
 
     # create user directory with default keymap files
     # create user directory with default keymap files
     shutil.copytree(keymap_path_default, keymap_path_new, symlinks=True)
     shutil.copytree(keymap_path_default, keymap_path_new, symlinks=True)
 
 
     # end message to user
     # end message to user
-    cli.log.info("%s keymap directory created in: %s", keymap, keymap_path_new)
-    cli.log.info("Compile a firmware with your new keymap by typing: \n\n\tqmk compile -kb %s -km %s\n", keyboard, keymap)
+    cli.log.info(f'{{fg_green}}Created a new keymap called {{fg_cyan}}{user_name}{{fg_green}} in: {{fg_cyan}}{keymap_path_new}.{{fg_reset}}')
+    cli.log.info(f"Compile a firmware with your new keymap by typing: {{fg_yellow}}qmk compile -kb {kb_name} -km {user_name}{{fg_reset}}.")