elviss 2 éve
szülő
commit
1c2a9e4d01
2 módosított fájl, 40 hozzáadás és 2 törlés
  1. 39 1
      src/PackageClass.php
  2. 1 1
      src/Utility.php

+ 39 - 1
src/PackageClass.php

@@ -77,6 +77,11 @@ class PackageClass
 			return false;
 		}
 		
+		//运行各个依赖仓库的脚本
+		if(! self::runVendorPkgsScript($vendorDir,$vendorPkgs) ){
+			return false;
+		}
+		
 		//顶层仓库操作
 		if(! self::postUpdateRootPkg($vendorDir,$rootPkg) ){
 			return false;
@@ -193,6 +198,23 @@ class PackageClass
 		}
 		return true;
 	}
+	
+	private static function runVendorPkgsScript($vendorDir,$vendorPkgs)
+	{
+		$count = count($vendorPkgs);
+		foreach($vendorPkgs as $i=>$pkg){
+			//获取包信息
+			$repoDir = pathJoin($vendorDir,$pkg->getName());
+			$packageInfo = self::getPackageInfo($vendorDir,$repoDir,$pkg);
+			
+			//执行当前依赖包的script文件
+			if(! self::runScriptFiles($packageInfo) ){
+				self::setProgressFailed('RUN_SCRIPT_FILES_FAILED');
+				return false;
+			}
+		}
+		return true;
+	}
 	private static function postUpdateRootPkg($vendorDir,$pkg)
 	{
 		//获取包信息
@@ -378,6 +400,22 @@ class PackageClass
 		);
 	}
 	
+	//运行脚本文件
+	private static function runScriptFiles($packageInfo)
+	{
+		$toolDir = $packageInfo['toolDir'];
+		$cacheDir = $packageInfo['cacheDir'];
+		$repoName = $packageInfo['repoName'];
+		$version = $packageInfo['version'];
+		$vendorDir = $packageInfo['vendorDir'];
+		$ossHost = $packageInfo['ossHost'];
+		
+		$scriptFiles = $packageInfo['helper']['script-files'] ? : array();	
+		foreach($scriptFiles as $fileInfo){
+			$fileName = $fileInfo['name'];
+		}
+		return true;
+	}
 	//下载包module文件
 	private static function fetchModuleFiles($packageInfo)
 	{
@@ -628,7 +666,7 @@ class PackageClass
 			}
 			$targetName = $fileInfo['target'];
 			$targetPath = pathJoin($rootDir,$targetName);
-			if( replaceMacro($filePath,$targetPath,$macros) ){
+			if( replaceFileMacro($filePath,$targetPath,$macros) ){
 				logInfo("succeeded to replace macro file",$fileName);
 			}
 			else{

+ 1 - 1
src/Utility.php

@@ -194,7 +194,7 @@ function filedirCopy(string $sourcePath, string $targetPath){
 }
 
 //替换文件中的宏变量
-function replaceMacro(string $filePath,string $targetPath,array $macros){
+function replaceFileMacro(string $filePath,string $targetPath,array $macros){
 	$content = file_get_contents($filePath);
 	foreach($macros as $key=>$value){
 		$content = str_replace($key,$value,$content);