// file      : bpkg/pkg-verify.cli
// license   : MIT; see accompanying LICENSE file

include <bpkg/common.cli>;

"\section=1"
"\name=bpkg-pkg-verify"
"\summary=verify package archive"

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

    "\h|SYNOPSIS|

     \c{\b{bpkg pkg-verify} [<options>] <file>}

     \h|DESCRIPTION|

     The \cb{pkg-verify} command verifies that the specified archive file is a
     valid \cb{bpkg} package. Specifically, it checks that the file's name and
     the top-level directory inside the archive match the canonical
     \c{\i{name}\b{-}\i{version}} form and that there is a valid manifest file
     in that top-level directory. Additionally, if the \cb{--deep} option is
     specified, it also checks that the required \c{*-build} values/files are
     present in the manifest/archive and the files referenced by the
     \cb{*-file} manifest values are present in the archive and are not empty."
  }

  class pkg_verify_options: common_options
  {
    "\h|PKG-VERIFY OPTIONS|"

    bool --silent
    {
      "Suppress the error messages about the reason why the package is
       invalid. Just return the error status."
    }

    bool --deep
    {
      "Verify the presence of the required \c{*-build} values/files and
       the validity of files referenced by the \cb{*-file} manifest values."
    }

    bool --ignore-unknown
    {
      "Ignore unknown manifest entries. By default, \cb{bpkg} will refuse to
       declare such a package valid since it cannot be sure the unknown
       entries are valid. Note that this option also ignores the version
       constraints in the special toolchain build-time dependencies."
    }

    bool --manifest
    {
      "Instead of printing the successful verification result in the
       human-readable form, dump the package manifest to \cb{stdout}. If the
       \cb{--deep} option is specified, then in the resulting manifest the
       \cb{*-file} values are replaced with the contents of the referenced
       files, the \c{*-build} values are automatically added (unless the
       corresponding files are absent), and the package dependency constraints
       are completed."
    }
  };

  "
   \h|DEFAULT OPTIONS FILES|

   See \l{bpkg-default-options-files(1)} for an overview of the default
   options files. For the \cb{pkg-verify} command the following options files
   are searched for in the predefined directories (system, etc) and, if found,
   loaded in the order listed:

   \
   bpkg.options
   bpkg-pkg-verify.options
   \
  "
}
