in src/RouterCLILookupCodegenBuilder.hack [217:251]
private function getMainMethod(): CodegenMethod {
return $this->cg->codegenMethod('main')
->addParameter('KeyedContainer<int, string> $argv')
->setReturnType('void')
->setBody(
$this->cg->codegenHackBuilder()
->addAssignment(
'$path',
'$argv[1] ?? null',
HackBuilderValues::literal(),
)
->startIfBlock('$path === null')
->addLine('\\fprintf(\\STDERR, "Usage: %s PATH\n", $argv[0]);')
->addLine('exit(1);')
->endIfBlock()
->addAssignment(
'$controllers',
'$this->getControllersForPath($path)',
HackBuilderValues::literal(),
)
->startIfBlock('$controllers->isEmpty()')
->addLine('\\printf("No controller found for \'%s\'.\n", $path);')
->addLine('exit(1);')
->endIfBlock()
->startForeachLoop('$controllers', '$method', '$controller')
->addAssignment(
'$pretty',
'$this->prettifyControllerName($controller)',
HackBuilderValues::literal(),
)
->addLine('\\printf("%-8s %s\n", $method.\':\', $pretty);')
->endForeachLoop()
->getCode()
);
}