private function getCodegenFile()

in src/RouterCLILookupCodegenBuilder.hack [64:95]


  private function getCodegenFile(
    string $path,
    ?string $namespace,
    string $router_classname,
    string $utility_classname,
  ): CodegenFile {
    $file = $this->cg->codegenFile($path)
      ->setDoClobber($this->discardChanges)
      ->setShebangLine('#!/usr/bin/env hhvm')
      ->setFileType(CodegenFileType::HACK_STRICT)
      ->setGeneratedFrom($this->generatedFrom)
      ->addClass($this->getCodegenClass($router_classname, $utility_classname))
      ->addFunction(
        $this->cg->codegenFunction('hack_router_cli_lookup_generated_main')
          ->addEmptyUserAttribute('__EntryPoint')
          ->setReturnType('void')
          ->setBodyf(
            "%s\n".
            '$argv = '.
            '\\Facebook\\TypeAssert\\matches<KeyedContainer<int, string>>('.
            "\\HH\\global_get('argv'));\n".
            "(new %s())->main(\$argv);\n",
            $this->getInitCode(),
            $utility_classname,
          ),
      );

    if ($namespace !== null) {
      $file->setNamespace($namespace);
    }
    return $file;
  }