docs: def build(subparsers):
      """
      Build source packages.
  
      The mp build program runs all of the resources listed in a Metatab file and
      produces one or more Metapack packages with those resources localized. It
      will always try to produce a Filesystem package, and may optionally produce
      Excel, Zip and CSV packages.
  
      Typical usage is to be run inside a source package directory with
  
      .. code-block:: bash
  
          $ mp build
  
      To build all of the package types: 
      
      .. code-block:: bash
  
          $ mp build -fezc
  
      By default, packages are built with versioned names. The
      :option:`--nonversion-name` option will create file packages with
      non-versioned name, and the :option:`--nonversioned-link` option will
      produce a non-versioned soft link pointing to the versioned file.
  
  
      """
  
      parser = subparsers.add_parser(
          'build',
          help='Build derived packages',
          description=build.__doc__,
          formatter_class=argparse.RawDescriptionHelpFormatter,
          epilog='')
  
  
      parser.set_defaults(run_command=run_metapack)
  
      parser.add_argument('metatabfile', nargs='?',
                          help="Path or URL to a metatab file. If not provided, defaults to 'metadata.csv'. "
                            )
  
      parser.add_argument('-p', '--profile', help="Name of a BOTO or AWS credentails profile", required=False)
  
      parser.add_argument('-D', '--package-directory', help="Write Zip, Excel and CSV packages to an alternate directory",
                              required=False)
  
      parser.add_argument('-F', '--force', action='store_true', default=False,
                               help='Force some operations, like updating the name and building packages')
  
      parser.add_argument('-R', '--reuse-resources', action='store_true', default=False,
                          help='When building Filesystem package, try to reuse resources built in prior build')
  
      group = parser.add_mutually_exclusive_group()
  
      group.add_argument('-n', '--nonversion-name', action='store_true', default=False,
                          help='Write file packages with non-versioned names')
  
      group.add_argument('-N', '--nonversion-link', action='store_true', default=False,
                          help='Create links with nonversioned names to file packages')
  
      parser.set_defaults(handler=None)
  
  
  
      ##
      ## Derived Package Group
  
      derived_group = parser.add_argument_group('Derived Packages', 'Generate other types of packages')
  
      derived_group.add_argument('-e', '--excel', action='store_true', default=False,
                                 help='Create an excel archive from a metatab file')
  
      derived_group.add_argument('-z', '--zip', action='store_true', default=False,
                                 help='Create a zip archive from a metatab file')
  
      derived_group.add_argument('-f', '--filesystem', action='store_true', default=False,
                                 help='Create a filesystem archive from a metatab file')
  
      derived_group.add_argument('-c', '--csv', action='store_true', default=False,
                                 help='Create a CSV archive from a metatab file')
  
      ##
      ## Administration Group
  
      admin_group = parser.add_argument_group('Administration', 'Information and administration')
  
      admin_group.add_argument('--clean-cache', default=False, action='store_true',
                               help="Clean the download cache")
  
      admin_group.add_argument('-C', '--clean', default=False, action='store_true',
                               help="For some operations, like updating schemas, clear the section of existing terms first")