public function buildAll()

in src/build/UnifiedAPIIndexBuildStep.php [23:96]


  public function buildAll(): void {
    Log::i("\nUnifiedAPIIndexBuildStep");
    $cg = $this->getCodegenFactory();

    $defs = Map {};
    $defs->setAll($this->getHackAPILinks(APIProduct::HACK));
    $defs->setAll($this->getHackAPILinks(APIProduct::HSL));
    $defs->setAll($this->getHackAPILinks(APIProduct::HSL_EXPERIMENTAL));
    $defs->setAll($this->getSpecialAttributeLinks());

    $cg->codegenFile(BuildPaths::UNIFIED_INDEX)
      ->setNamespace("HHVM\\UserDocumentation")
      ->addClass(
        $cg->codegenClass('UnifiedIndexData')
          ->setIsFinal(true)
          ->setIsAbstract(true)
          ->addMethod(
            $cg->codegenMethod('getIndex')
              ->setIsStatic(true)
              ->setReturnType('dict<string, string>')
              ->setBody(
                $cg->codegenHackBuilder()
                  ->addReturn(
                    dict($defs),
                    CG\HackBuilderValues::dict(
                      CG\HackBuilderKeys::export(),
                      CG\HackBuilderValues::export(),
                    ),
                  )
                  ->getCode(),
              ),
          ),
      )
      ->save();
    // Make it available to later build steps
    require_once(BuildPaths::UNIFIED_INDEX);


    $jump_index = dict[];
    foreach ($defs as $name => $url) {
      $name = Str\lowercase($name);
      if (
        (!C\contains_key($jump_index, $name)) ||
        Str\length($jump_index[$name]) > Str\length($url)
      ) {
        $jump_index[$name] = $url;
      }
    }

    $cg->codegenFile(BuildPaths::JUMP_INDEX)
      ->setNamespace("HHVM\\UserDocumentation")
      ->addClass(
        $cg->codegenClass('JumpIndexData')
          ->setIsFinal(true)
          ->setIsAbstract(true)
          ->addMethod(
            $cg->codegenMethod('getIndex')
              ->setIsStatic(true)
              ->setReturnType('dict<string, string>')
              ->setBody(
                $cg->codegenHackBuilder()
                  ->addReturn(
                    $jump_index,
                    CG\HackBuilderValues::dict(
                      CG\HackBuilderKeys::export(),
                      CG\HackBuilderValues::export(),
                    ),
                  )
                  ->getCode(),
              ),
          ),
      )
      ->save();
  }