@cli.argument('filename',nargs='?',arg_only=True,type=qmk.path.FileType('r'),completer=FilesCompleter('.json'),help='The configurator export to compile')
@cli.argument('-kb','--keyboard',type=keyboard_folder,completer=keyboard_completer,help='The keyboard to build a firmware for. Ignored when a configurator export is supplied.')
@cli.argument('-kb','--keyboard',type=keyboard_folder_or_all,completer=keyboard_completer,help='The keyboard to build a firmware for. Ignored when a configurator export is supplied.')
@cli.argument('-km','--keymap',completer=keymap_completer,help='The keymap to build a firmware for. Ignored when a configurator export is supplied.')
@cli.argument('-n','--dry-run',arg_only=True,action='store_true',help="Don't actually build, just show the make command to be run.")
@cli.argument('-j','--parallel',type=int,default=1,help="Set the number of parallel make jobs; 0 means unlimited.")