// file      : bpkg/cfg-info.cli
// license   : MIT; see accompanying LICENSE file

include <bpkg/configuration.cli>;

"\section=1"
"\name=bpkg-cfg-info"
"\summary=print configuration information"

namespace bpkg
{
  {
    "<options> <dir>",

    "\h|SYNOPSIS|

     \c{\b{bpkg cfg-info} [<options>]}

     \h|DESCRIPTION|

     The \cb{cfg-info} command prints the current configuration's absolute
     path, id, type, name, and mode. The mode is only printed if specified.
     If the \cb{--link} and/or \cb{--backlink} options are specified, then
     this information is also printed for each linked and/or implicitly
     backlinked configuration, if any. Note that the dangling implicit
     backlinks are silently skipped, unless \cb{--dangling} is specified, in
     which case this information is also printed for them.  Note that the
     information is written to \cb{stdout}, not \cb{stderr}.

     If the \cb{--recursive} option is specified together with \cb{--link}
     and/or \cb{--backlink}, then this information is printed for linked
     and/or implicitly backlinked configuration, recursively.

     The output format is regular with each value printed on a separate line
     and prefixed with the value name. If the \cb{--link}, \cb{--backlink},
     and/or \cb{--dangling} options are specified, then information blocks
     corresponding to linked configurations are separated with blank
     lines. For example:

     \
     path: /path/to/cfg/
     uuid: 8d439f03-7342-4502-8b1c-74b173869478
     type: target
     name: foo
     mode: fetch-cache=false

     path: /path/to/host-cfg/
     uuid: 7ee4dab3-07d9-4163-81c0-3779166a7213
     type: host
     name: tools

     path: /path/to/build2-cfg/
     uuid: d453aa2a-92c4-4066-87e4-c8672eed06e1
     type: build2
     name: modules
     \
     "
  }

  class cfg_info_options: configuration_options
  {
    "\h|CFG-INFO OPTIONS|"

    bool --link
    {
      "Print linked configurations."
    }

    bool --backlink
    {
      "Print implicitly backlinked configurations."
    }

    bool --dangling
    {
      "Print dangling implicit backlinks."
    }

    bool --recursive
    {
      "Print linked configurations recursively."
    }
  };

  "
   \h|DEFAULT OPTIONS FILES|

   See \l{bpkg-default-options-files(1)} for an overview of the default
   options files. For the \cb{cfg-info} command the search start directory is
   the configuration directory. The following options files are searched for
   in each directory and, if found, loaded in the order listed:

   \
   bpkg.options
   bpkg-cfg-info.options
   \

   The following \cb{cfg-info} command options cannot be specified in the
   default options files:

   \
   --directory|-d
   \
  "
}
