function buildCommandList() { includeAllModuleFiles(); $functions = get_defined_functions(); $lookup = []; foreach ($functions['user'] as $function) { if (strpos($function, 'pestle_cli') === false) { continue; } $r = new ReflectionFunction($function); // $doc_comment = getDocCommentAsString($function); $parsed_doc_command = parseDocBlockIntoParts($r->getDocComment()); $command = array_key_exists('command', $parsed_doc_command) ? $parsed_doc_command['command'] : ['pestle-none-set']; $command = array_shift($command); $lookup[$command] = $r->getFilename(); } cacheCommandList($lookup); return $lookup; }
/** * Main entry point */ function main($argv) { bootstrapPhp(); doVersionCheck(); doPestleImports(); $parsed_argv = parseArgvIntoCommandAndArgumentsAndOptions($argv); $command_name = getCommandNameFromParsedArgv($parsed_argv); if (preg_match('%\\.php%', $command_name) && file_exists($command_name)) { $parsed_argv['arguments'][] = $command_name; $command_name = 'pestle_run_file'; $parsed_argv['command'] = $command_name; } //include in the library for this command includeLibraryForCommand($command_name); $command = getReflectedCommand($command_name); $doc_block = parseDocBlockIntoParts($command->getDocComment()); list($arguments, $options) = getArgumentsAndOptionsFromParsedArgvAndDocComment($parsed_argv, $doc_block); $command->invokeArgs([$arguments, $options]); }