private function lookupPathImpl()

in src/HHClientFallbackHandler.hack [222:251]


  private function lookupPathImpl(string $kind, string $name): ?string {
    $cmd = Vec\map(
      vec['hh_client', '--json', '--search-'.$kind, $name],
      $x ==> \escapeshellarg($x),
    );
    $cmd = \implode(' ', $cmd);

    $exit_code = null;
    $_output = varray[];
    $last = \exec($cmd, inout $_output, inout $exit_code);
    if ($exit_code !== 0) {
      return null;
    }

    $data = \json_decode($last, /* assoc = */ true);
    if (!$data is Traversable<_>) {
      return null;
    }
    foreach ($data as $row) {
      $row as KeyedContainer<_, _>;
      if ($row['name'] === $name) {
        $file = $row['filename'] as ?string;
        if ($file is null || \substr($file, -4) === '.hhi') {
          return null;
        }
        return $file;
      }
    }
    return null;
  }