def prompt_layout(): prompt = """ {fg_yellow}Pick Base Layout{style_reset_all} As a starting point, one of the common layouts can be used to bootstrap the process Default Layout? """ # avoid overwhelming user - remove some? filtered_layouts = [x for x in available_layouts if not any(xs in x for xs in ['_split', '_blocker', '_tsangan', '_f13'])] filtered_layouts.append("none of the above") return choice(prompt, filtered_layouts, default=len(filtered_layouts) - 1)
def prompt_mcu(): prompt = """ {fg_yellow}What Powers Your Project{style_reset_all} For more infomation, see: https://docs.qmk.fm/#/compatible_microcontrollers MCU? """ # remove any options strictly used for compatibility filtered_mcu = [x for x in (dev_boards + mcu_types) if not any(xs in x for xs in ['cortex', 'unknown'])] return choice(prompt, filtered_mcu, default=filtered_mcu.index("atmega32u4"))
def new_keyboard(cli): """Creates a new keyboard. """ cli.log.info('{style_bright}Generating a new QMK keyboard directory{style_normal}') cli.echo('') # Get keyboard name new_keyboard_name = None while not new_keyboard_name: new_keyboard_name = cli.args.keyboard if cli.args.keyboard else question('Keyboard Name:') if not validate_keyboard_name(new_keyboard_name): cli.log.error('Keyboard names must contain only {fg_cyan}lowercase a-z{fg_reset}, {fg_cyan}0-9{fg_reset}, and {fg_cyan}_{fg_reset}! Please choose a different name.') # Exit if passed by arg if cli.args.keyboard: return False new_keyboard_name = None continue keyboard_path = qmk.path.keyboard(new_keyboard_name) if keyboard_path.exists(): cli.log.error(f'Keyboard {{fg_cyan}}{new_keyboard_name}{{fg_reset}} already exists! Please choose a different name.') # Exit if passed by arg if cli.args.keyboard: return False new_keyboard_name = None # Get keyboard type keyboard_type = cli.args.type if cli.args.type else choice('Keyboard Type:', KEYBOARD_TYPES, default=0) # Get username user_name = None while not user_name: user_name = question('Your Name:', default=find_user_name()) if not user_name: cli.log.error('You didn\'t provide a username, and we couldn\'t find one set in your QMK or Git configs. Please try again.') # Exit if passed by arg if cli.args.username: return False # Copy all the files copy_templates(keyboard_type, keyboard_path) # Replace all the placeholders keyboard_basename = keyboard_path.name replacements = [ ('%YEAR%', str(date.today().year)), ('%KEYBOARD%', keyboard_basename), ('%YOUR_NAME%', user_name), ] filenames = [ keyboard_path / 'config.h', keyboard_path / 'info.json', keyboard_path / 'readme.md', keyboard_path / f'{keyboard_basename}.c', keyboard_path / f'{keyboard_basename}.h', keyboard_path / 'keymaps/default/readme.md', keyboard_path / 'keymaps/default/keymap.c', ] replace_placeholders(replacements, filenames) cli.echo('') cli.log.info(f'{{fg_green}}Created a new keyboard called {{fg_cyan}}{new_keyboard_name}{{fg_green}}.{{fg_reset}}') cli.log.info(f'To start working on things, `cd` into {{fg_cyan}}{keyboard_path}{{fg_reset}},') cli.log.info('or open the directory in your preferred text editor.')
def new_keyboard(cli): """Creates a new keyboard. """ cli.log.info('{style_bright}Generating a new QMK keyboard directory{style_normal}') cli.echo('') # Get keyboard name new_keyboard_name = None while not new_keyboard_name: new_keyboard_name = cli.args.keyboard if cli.args.keyboard else question('Keyboard Name:') if not validate_keyboard_name(new_keyboard_name): cli.log.error('Keyboard names must contain only {fg_cyan}lowercase a-z{fg_reset}, {fg_cyan}0-9{fg_reset}, and {fg_cyan}_{fg_reset}! Please choose a different name.') # Exit if passed by arg if cli.args.keyboard: return False new_keyboard_name = None continue keyboard_path = qmk.path.keyboard(new_keyboard_name) if keyboard_path.exists(): cli.log.error(f'Keyboard {{fg_cyan}}{new_keyboard_name}{{fg_reset}} already exists! Please choose a different name.') # Exit if passed by arg if cli.args.keyboard: return False new_keyboard_name = None # Get keyboard type keyboard_type = cli.args.type if cli.args.type else choice('Keyboard Type:', KEYBOARD_TYPES, default=0) # Get username user_name = None while not user_name: user_name = question('Your GitHub User Name:', default=find_user_name()) if not user_name: cli.log.error('You didn\'t provide a username, and we couldn\'t find one set in your QMK or Git configs. Please try again.') # Exit if passed by arg if cli.args.username: return False real_name = None while not real_name: real_name = question('Your real name:', default=user_name) keyboard_basename = keyboard_path.name replacements = { "YEAR": str(date.today().year), "KEYBOARD": keyboard_basename, "USER_NAME": user_name, "YOUR_NAME": real_name, } template_dir = Path('data/templates') template_tree(template_dir / 'base', keyboard_path, replacements) template_tree(template_dir / keyboard_type, keyboard_path, replacements) cli.echo('') cli.log.info(f'{{fg_green}}Created a new keyboard called {{fg_cyan}}{new_keyboard_name}{{fg_green}}.{{fg_reset}}') cli.log.info(f'To start working on things, `cd` into {{fg_cyan}}{keyboard_path}{{fg_reset}},') cli.log.info('or open the directory in your preferred text editor.')