cmc


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 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