Provided by: hhvm_3.11.1+dfsg-1ubuntu1_amd64 bug

NAME

       hh_client - Interface to Hack language typechecker

SYNOPSIS

       hh_client [MODE] [OPTIONS] [DIRECTORY]

DESCRIPTION

       hh_client(1)  is an interface to a static analysis tool which is what enforces most of the
       Hack language's type system. Code must pass  validation  of  this  tool  in  order  to  be
       considered valid code in the Hack language.

       There  are several possible MODEs for hh_client(1) (see below). By default, it will invoke
       the check mode, with the current directory as DIRECTORY.  These are  reasonable  defaults,
       meaning that most users can simply invoke the command as

              hh_client

       with no arguments to get a list of type errors across the entire project.

       All  of  the  MODEs  accept  a  DIRECTORY  as an optional final argument. This denotes the
       project upon which to operate.  hh_client(1) walks up the filesystem  from  the  DIRECTORY
       until it finds a file called .hhconfig and then operates on the body of Hack language code
       rooted in this directory.  If no DIRECTORY is specified, it uses the current directory  by
       default.  This  means you may run hh_client(1) in any subdirectory of your project and get
       type errors for the whole project without ever specifying a DIRECTORY explicitly.

       hh_client(1) implements very little logic itself, but rather serves as an interface to the
       hh_server(1) daemon. The server will automatically be started and restarted as needed.

MODES

   check
       The default MODE if none is specified. With no OPTIONS specified, it prints a list of type
       errors on standard output, or prints "No errors!" if there were none.

       Many OPTIONS affect the output of check  mode,  sometimes  causing  it  to  do  completely
       different  things.  (Those  can  be  considered  "sub-modes" of check mode.) Many of these
       options are undergoing considerable revision and so are  not  documented  here;  read  the
       source for a full list.

       Widely-useful OPTIONS for check mode include:

       --color FILE
              Sub-mode  which  prints  out  information  on  what  parts  of  FILE  are  actually
              typechecked and which are not. Due to Hack's partial mode and PHP interoperability,
              the  type  system  may  not know the types of parts of a program.  In this case, it
              trusts the programmer and carries on. The --color mode prints out a file with  ANSI
              terminal colors, where green code is actually fully checked, and red code cannot be
              fully checked due to such missing type information.

       --help Prints information about hh_client(1) and its command line options, and then exits.
              Many  of  the  options described there are experimental, especially if they are not
              described in this man page.

       --from EDITOR
              Prints output in the format expected by a specific editor. Valid values  of  EDITOR
              are emacs and vim.  For usage by other tools, try --json instead.

       --json Prints  output  in  a  JSON format intended for machine consumption, instead of the
              output intended for human consumption that is output by default.

       --retries NUM
              If the typechecker daemon is busy, try NUM times to connect to it before giving up.
              Set NUM to 0 to disable retries if the server is not immediately available.

       --status
              Prints  human-readable  type error information to standard out and then exits.  The
              default sub-mode of check if none is specified. This output  is  not  intended  for
              usage by tools, but only for human consumption. For output intended for tool usage,
              see the --json and/or --from options.

       --version
              Prints the current client version, including build ID  and  build  date,  and  then
              exits.

       --auto-complete
              Autocompletes  text  on STDIN where the cursor is replaced with AUTO332.  Returns a
              newline-separated list.

       --search STRING
              Fuzzy search symbol definitions for STRING.  Returns a newline-separated list.

   start
       Explicitly starts the hh_server(1) daemon if it  is  not  already  running.  This  is  not
       normally necessary, since check mode will start it as needed if it is not running.

   stop
       Explicitly stops the hh_server(1) daemon if it is running. This is not normally necessary,
       since the daemon will exit if it has not been used for an extended period of time.

   restart
       Explicitly stops and then starts again the hh_server(1) daemon. Fails if the daemon is not
       currently  running.  Restarting the daemon is not normally necessary, since it updates its
       state in the background, and hh_client(1) will restart it automatically if the typechecker
       binaries have been updated.

EXIT STATUS

       For  check  mode  in  the  --status  sub-mode, hh_client(1) returns 0 if there are no type
       errors, and non-zero otherwise.

       Exit statuses for any other invocations are currently undefined and subject to change.

ENVIRONMENT

       USER   Used in combination with the path to the project root in order to locate the socket
              for  communicating with the running hh_server(1) daemon. Normally set by your login
              environment, but may be unset in some nonstandard setups.

FILES

       .hhconfig
              When determining where the project root is in order to figure  out  what  files  to
              actually  typecheck,  hh_client(1)  walks  up the directory tree from the specified
              DIRECTORY until it finds this file. The set of files recursively  included  in  the
              directory with the .hhconfig file is the set of files typechecked.

       /tmp/hh_server_$USER/
              The  client  looks  inside  this  directory  for  sockets  to  communicate with the
              hh_server(1) daemon. The sockets are named based on a hash of the absolute path  of
              the project root.

BUGS

       The  Hack  language  is part of the HHVM project. Known bugs can be found at that tracker,
       and new ones should be reported there as well: https://github.com/facebook/hhvm/issues

SEE ALSO

       hh_server(1), hackificator(1), hack_remove_soft_types(1).
       http://docs.hhvm.com/manual/en/install.hack.bootstrapping.php
       http://www.hacklang.org/

                                                                                     HH_CLIENT(1)