Tool for assembly, compilation, and validation of component manifests
Usage: cmc [OPTIONS] <COMMAND>
OPTIONS:
  -s, --stamp <STAMP>  Stamp this file on success
  -h, --help           Print help
SUBCOMMANDS:
  validate-references  validate a component manifest against package manifest
  merge                merge the listed manifest files. Does NOT validate the resulting manifest
  include              recursively process contents from includes, and optionally validate the result
  check-includes       check if given includes are present in a given component manifest
  format               format a json file
  compile              compile a CML file
  print-cml-reference  print generated .cml reference documentation
  debug-print-cm       print pretty rust-debug-format-string representation of .cm file
  help                 Print this message or the help of the given subcommand(s)
check-includes
check if given includes are present in a given component manifest
Usage: cmc check-includes [OPTIONS] <FILE> [expect]...
Arguments:
  <FILE>
          file to process
  [expect]...
OPTIONS:
  -f, --fromfile <FROMFILE>
          response file for includes to expect
          If specified, additional includes to expect will be read from the path provided. The input format is delimited by newlines.
  -d, --depfile <DEPFILE>
          depfile for includes
          If specified, include paths will be listed here, delimited by newlines.
  -p, --includepath <INCLUDEPATH>...
          base paths for resolving includes
  -r, --includeroot <INCLUDEROOT>
          base path for resolving include paths that start with "//"
          \[default: ]
  -h, --help
          Print help (see a summary with '-h')
compile
compile a CML file
Usage: cmc compile [OPTIONS] --output <OUTPUT> <FILE>
Arguments:
  <FILE>
          file to format
OPTIONS:
  -o, --output <OUTPUT>
          file to write the formatted results to
  -d, --depfile <DEPFILE>
          depfile for includes
          If specified, include paths will be listed here, delimited by newlines.
  -p, --includepath <INCLUDEPATH>...
          base paths for resolving includes
  -r, --includeroot <INCLUDEROOT>
          base path for resolving include paths that start with "//"
          \[default: .]
      --config-package-path <CONFIG_PACKAGE_PATH>
          path within the component's package at which its configuration will be available
  -f, --features <FEATURES>...
          The set of non-standard features to compile with. Only applies to CML files
      --experimental-force-runner <EXPERIMENTAL_FORCE_RUNNER>
          override runner to this value in resulting CML
          If specified, the program.runner field will be set to this value. This option is EXPERIMENTAL and subject to removal without warning.
      --must-offer-protocol <MUST_OFFER_PROTOCOL>
          protocols to verify that all children and collections are offered
          If specified, for each offer named, cmc will require that all children or collections in `files` have been offered a capability named for the offer specified.  This can be used to help find missing offers of important capabilities, like fuchsia.logger.LogSink
      --must-use-protocol <MUST_USE_PROTOCOL>
          protocols to verify that all children and collections are used
          If specified, for each offer named, cmc will require that the offer is in a use block. This can be used to help find missing usages of important capabilities, like fuchsia.logger.LogSink
      --must-offer-dictionary <MUST_OFFER_DICTIONARY>
          dictionaries to verify that all children and collections are used
          If specified, for each offer named, cmc will require that the offer is in a use block. This can be used to help find missing usages of important capabilities, like diagnostics
  -h, --help
          Print help (see a summary with '-h')
debug-print-cm
print pretty rust-debug-format-string representation of .cm file
Usage: cmc debug-print-cm <FILE>
Arguments:
  <FILE>  file to process
OPTIONS:
  -h, --help  Print help
format
format a json file
Usage: cmc format [OPTIONS] [FILE]
Arguments:
  [FILE]  file to format. If missing, use stdin
OPTIONS:
  -p, --pretty           deprecated and ignored. Please do not use (https://fxbug.dev/42060365)
      --cml              deprecated and ignored. Please do not use (https://fxbug.dev/42060365)
  -i, --in-place         replace the input file with the formatted output (implies `--output <inputfile>`)
  -o, --output <OUTPUT>  file to write the formatted results to, will print to stdout if not provided
  -h, --help             Print help
include
recursively process contents from includes, and optionally validate the result
Usage: cmc include [OPTIONS] <FILE>
Arguments:
  <FILE>
          file to process
OPTIONS:
  -o, --output <OUTPUT>
          file to write the merged results to, will print to stdout if not provided
  -d, --depfile <DEPFILE>
          depfile for includes
          If specified, include paths will be listed here, delimited by newlines.
  -p, --includepath <INCLUDEPATH>...
          base paths for resolving includes
  -r, --includeroot <INCLUDEROOT>
          base path for resolving include paths that start with "//"
          \[default: .]
      --validate <VALIDATE>
          validate the result
          \[default: true]
          \[possible values: true, false]
  -f, --features <FEATURES>...
          The set of non-standard features to compile with. Only applies to CML files
  -h, --help
          Print help (see a summary with '-h')
merge
merge the listed manifest files. Does NOT validate the resulting manifest.
The semantics for merging are the same ones used for `include`: https://fuchsia.dev/reference/cml#include
Usage: cmc merge [OPTIONS] [FILE]...
Arguments:
  [FILE]...
          files to process
          If any file contains an array at its root, every object in the array will be merged into the final object.
OPTIONS:
  -o, --output <OUTPUT>
          file to write the merged results to, will print to stdout if not provided
  -f, --fromfile <FROMFILE>
          response file for files to process
          If specified, additional files to merge will be read from the path provided. The input format is delimited by newlines.
  -d, --depfile <DEPFILE>
          depfile for includes
          If specified, include paths will be listed here, delimited by newlines.
  -h, --help
          Print help (see a summary with '-h')
print-cml-reference
print generated .cml reference documentation
Usage: cmc print-cml-reference [OPTIONS]
OPTIONS:
  -o, --output <file path>  If provided, will output generated reference documentation to a text file at the file path provided
  -h, --help                Print help
validate-references
validate a component manifest against package manifest
Usage: cmc validate-references [OPTIONS] --component-manifest <Component Manifest> --package-manifest <Package Manifest>
OPTIONS:
  -c, --component-manifest <Component Manifest>
  -p, --package-manifest <Package Manifest>
  -e, --context <Free text label, for instance as context for errors printed>
  -h, --help                                                                   Print help