Repository: google/OpenSK
File: deploy.py (Python)

Code before:
      "--verbose",
      action="append_const",
      const="verbose",
      dest="features",
      help=("The console will be used to output verbose information about the "
            "OpenSK application. This also automatically activates --debug."),
  )
  main_parser.add_argument(
      "--no-u2f",
      action=RemoveConstAction,
      const="with_ctap1",
      dest="features",
      help=("Compiles the OpenSK application without backward compatible "
            "support for U2F/CTAP1 protocol."),
  )
  main_parser.add_argument(
      "--nfc",
      action="append_const",
      const="with_nfc",
      dest="features",
      help=("Compiles the OpenSK application with support for nfc."),
  )
  main_parser.add_argument(
      "--configure",
      action="store_true",
      default=False,
      dest="configure",
      help="Configure.",
  )
  main_parser.add_argument(
      "--vendor-hid",
      action="append_const",
      const="vendor_hid",
      dest="features",
      help=("Compiles the OpenSK application to support two HID usage pages."),
  )
  main_parser.add_argument(
      "--regen-keys",
      action="store_true",
      default=False,
      dest="regenerate_keys",
      help=("Forces the generation of files (certificates and private keys) "
            "under the crypto_data/ directory. "
            "This is useful to allow flashing multiple OpenSK authenticators "
            "in a row without them being considered clones."),
  )

  main_parser.add_argument(
      "--elf2tab-output",
      metavar="FILE",
      type=argparse.FileType("a"),

Review comment (suggestion):
If this default is `False` and the target is opensk, can you please print the warning from above?
```
      info("Your device is not yet configured, and lacks some functionality. "
           "If you run into issues, this command might help:\n\n"
           "./tools/configure.py \\\n"
           "    --certificate=crypto_data/opensk_cert.pem \\\n"
           "    --private-key=crypto_data/opensk.key\n\n"
           "Please read the Certificate considerations in docs/customization.md"
           " to understand the privacy trade-off.")
```

Also we'd have to update the `docs/` to add --configure to the deploy command, or explain that you might want to configure.

Code after:
  main_parser.add_argument(
      "--debug",
      action="append_const",
      const="debug_ctap",
      dest="features",
      help=("Compiles and installs the OpenSK application in debug mode "
            "(i.e. more debug messages will be sent over the console port "
            "such as hexdumps of packets)."),
  )
  main_parser.add_argument(
      "--debug-allocations",
      action="append_const",
      const="debug_allocations",
      dest="features",
      help=("The console will be used to output allocator statistics every "
            "time an allocation/deallocation happens."),
  )
  main_parser.add_argument(
      "--verbose",
      action="append_const",
      const="verbose",
      dest="features",
      help=("The console will be used to output verbose information about the "
            "OpenSK application. This also automatically activates --debug."),
  )
  main_parser.add_argument(
      "--no-u2f",
      action=RemoveConstAction,
      const="with_ctap1",
      dest="features",
      help=("Compiles the OpenSK application without backward compatible "
            "support for U2F/CTAP1 protocol."),
  )
  main_parser.add_argument(
      "--nfc",
      action="append_const",
      const="with_nfc",
      dest="features",
      help=("Compiles the OpenSK application with support for nfc."),
  )
  main_parser.add_argument(
      "--configure",
      action="store_true",
      default=True,
      dest="configure",
      help="Configure.",
  )
  main_parser.add_argument(
      "--vendor-hid",
      action="append_const",
      const="vendor_hid",