예제 #1
0
파일: module.php 프로젝트: astorm/pestle
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;
}
예제 #2
0
파일: module.php 프로젝트: benmarks/pestle
/**
* 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]);
}