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
						
					
					
				| <?php | |
| /** | |
|  * @link http://www.yiiframework.com/ | |
|  * @copyright Copyright (c) 2008 Yii Software LLC | |
|  * @license http://www.yiiframework.com/license/ | |
|  */ | |
|  | |
| namespace yii\apidoc\commands; | |
|  | |
| use phpDocumentor\Reflection\FileReflector; | |
| use yii\console\Controller; | |
| use yii\helpers\Console; | |
| use yii\helpers\FileHelper; | |
| use yii\apidoc\components\OfflineRenderer; | |
| use yii\apidoc\models\Context; | |
| 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); | |
| 	} | |
|  | |
| } |