You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					88 lines
				
				2.1 KiB
			
		
		
			
		
	
	
					88 lines
				
				2.1 KiB
			| 
								 
											12 years ago
										 
									 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @link http://www.yiiframework.com/
							 | 
						||
| 
								 | 
							
								 * @copyright Copyright (c) 2008 Yii Software LLC
							 | 
						||
| 
								 | 
							
								 * @license http://www.yiiframework.com/license/
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 
											12 years ago
										 
									 | 
							
								namespace yii\apidoc\commands;
							 | 
						||
| 
								 
											12 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 | 
							
								use phpDocumentor\Reflection\FileReflector;
							 | 
						||
| 
								 | 
							
								use yii\console\Controller;
							 | 
						||
| 
								 | 
							
								use yii\helpers\Console;
							 | 
						||
| 
								 | 
							
								use yii\helpers\FileHelper;
							 | 
						||
| 
								 
											12 years ago
										 
									 | 
							
								use yii\apidoc\components\OfflineRenderer;
							 | 
						||
| 
								 | 
							
								use yii\apidoc\models\Context;
							 | 
						||
| 
								 
											12 years ago
										 
									 | 
							
								use Yii;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @author Carsten Brandt <mail@cebe.cc>
							 | 
						||
| 
								 | 
							
								 * @since 2.0
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class PhpdocController extends Controller
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									public function actionIndex($targetDir)
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										echo "hi\n";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$targetDir = Yii::getAlias($targetDir);
							 | 
						||
| 
								 | 
							
										if (is_dir($targetDir) && !$this->confirm('TargetDirectory already exists. Overwrite?')) {
							 | 
						||
| 
								 | 
							
											return 2;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// TODO determine files to analyze
							 | 
						||
| 
								 | 
							
										$this->stdout('Searching files to process... ');
							 | 
						||
| 
								 | 
							
										$files = $this->findFiles(YII_PATH);
							 | 
						||
| 
								 | 
							
								//		$files = array_slice($files, 0, 42); // TODO remove this line
							 | 
						||
| 
								 | 
							
										$this->stdout('done.' . PHP_EOL, Console::FG_GREEN);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$fileCount = count($files);
							 | 
						||
| 
								 | 
							
										Console::startProgress(0, $fileCount, 'Processing files... ', false);
							 | 
						||
| 
								 | 
							
										$context = new Context();
							 | 
						||
| 
								 | 
							
										$done = 0;
							 | 
						||
| 
								 | 
							
										foreach($files as $file) {
							 | 
						||
| 
								 | 
							
											$context->addFile($file);
							 | 
						||
| 
								 | 
							
											Console::updateProgress(++$done, $fileCount);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										Console::endProgress(true);
							 | 
						||
| 
								 | 
							
										$this->stdout('done.' . PHP_EOL, Console::FG_GREEN);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										$this->stdout('Updating cross references and backlinks... ');
							 | 
						||
| 
								 | 
							
										$context->updateReferences();
							 | 
						||
| 
								 | 
							
										$this->stdout('done.' . PHP_EOL, Console::FG_GREEN);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// TODO LATER analyze for dead links and similar stuff
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// TODO render models
							 | 
						||
| 
								 | 
							
										$renderer = new OfflineRenderer();
							 | 
						||
| 
								 | 
							
										$renderer->targetDir = $targetDir;
							 | 
						||
| 
								 | 
							
										$renderer->render($context, $this);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									protected function findFiles($path, $except = [])
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										$path = FileHelper::normalizePath($path);
							 | 
						||
| 
								 | 
							
										$options = [
							 | 
						||
| 
								 | 
							
											'filter' => function ($path) {
							 | 
						||
| 
								 | 
							
												if (is_file($path)) {
							 | 
						||
| 
								 | 
							
													$file = basename($path);
							 | 
						||
| 
								 | 
							
													if ($file[0] < 'A' || $file[0] > 'Z') {
							 | 
						||
| 
								 | 
							
														return false;
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
												return null;
							 | 
						||
| 
								 | 
							
											},
							 | 
						||
| 
								 | 
							
											'only' => ['.php'],
							 | 
						||
| 
								 | 
							
											'except' => array_merge($except, [
							 | 
						||
| 
								 | 
							
												'/views/',
							 | 
						||
| 
								 | 
							
												'/requirements/',
							 | 
						||
| 
								 | 
							
												'/gii/generators/',
							 | 
						||
| 
								 | 
							
											]),
							 | 
						||
| 
								 | 
							
										];
							 | 
						||
| 
								 | 
							
										return FileHelper::findFiles($path, $options);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |