private function buildRouter()

in src/Codegen.hack [140:175]


  private function buildRouter(): void {
    $config = Shapes::idx($this->config, 'router');
    if ($config === null) {
      return;
    }

    $uri_map = (new UriMapBuilder($this->controllerFacts))->getUriMap();

    (new RouterCodegenBuilder(
      $this->getHackCodegenConfig(),
      $this->getControllerBase(),
      $uri_map,
    ))
      ->setCreateAbstractClass($config['abstract'])
      ->setGeneratedFrom($this->getGeneratedFrom())
      ->setDiscardChanges($this->config['discardChanges'] ?? false)
      ->renderToFile(
        $config['file'],
        Shapes::idx($config, 'namespace'),
        $config['class'],
      );

    $cli_config = $config['cliLookup'] ?? null;
    if ($cli_config === null) {
      return;
    }
    (new RouterCLILookupCodegenBuilder($this->getHackCodegenConfig()))
      ->setGeneratedFrom($this->getGeneratedFrom())
      ->setDiscardChanges($this->config['discardChanges'] ?? false)
      ->renderToFile(
        $cli_config['file'],
        Shapes::idx($config, 'namespace'),
        $config['class'],
        $cli_config['class'],
      );
  }