elviss vor 2 Jahren
Ursprung
Commit
d45b589916
2 geänderte Dateien mit 38 neuen und 8 gelöschten Zeilen
  1. 17 8
      src/PackageClass.php
  2. 21 0
      src/Utility.php

+ 17 - 8
src/PackageClass.php

@@ -42,8 +42,8 @@ class PackageClass
 			//获取当前包的common文件
 			self::fetchCommonFiles($packageInfo);
 
-			//获取当前包的config文件
-			self::fetchConfigFiles($packageInfo);
+			//拷贝当前包的config文件
+			self::copyConfigFiles($packageInfo);
 						
 			//更新部署进度
 			$percent = intval(100.0 * ($i+1) / count(vendorPkgs));
@@ -77,13 +77,13 @@ class PackageClass
 		//创建.distribute目录
 		$distributeDir = pathJoin(dirname($vendorDir),'.distribute');
 		if( !file_exists($distributeDir) ){
-			mkdir($distributeDir,0777,true);
+			createDirectory($distributeDir);
 		}
 		
 		//创建module目录
 		$moduleDir = pathJoin(dirname($vendorDir),'module');
 		if( !file_exists($moduleDir) ){
-			mkdir($moduleDir,0777,true);
+			createDirectory($moduleDir);
 		}
 		
 		//设置日志文件路径
@@ -235,21 +235,30 @@ class PackageClass
 		return true;
 	}
 	
-	//下载包config文件
-	private static function fetchConfigFiles($packageInfo)
+	//拷贝config文件
+	private static function copyConfigFiles($packageInfo)
 	{
 		$cacheDir = $packageInfo['cacheDir'];
 		$repoName = $packageInfo['repoName'];
 		$version = $packageInfo['version'];
 		$configDir = $packageInfo['configDir'];
-		$ossHost = $packageInfo['ossHost'];
+		$moduleDir = $packageInfo['moduleDir'];
 		$configFiles = $packageInfo['helper']['config-files'];
 		if(! $configFiles){
 			return;
 		}
 		foreach($configFiles as $fileInfo){
 			$fileName = $fileInfo['name'];
-			
+			$filePath = pathJoin($moduleDir,$fileName);
+			if(! file_exists($filePath) ){
+				logError($repoName,"config file not exists",$filePath);
+				return false;
+			}
+			if(!$fileInfo['override'] && file_exists($targetPath)){
+				logInfo($repoName,"skip copy config file",$targetPath);
+			}
+			$targetPath = pathJoin($configDir,$fileName);
+			fileCopy($filePath,$targetPath);
 		}
 		return true;
 	}

+ 21 - 0
src/Utility.php

@@ -62,6 +62,13 @@ function get7ZipPath($toolDir){
 function twoPathJoin($base, $path) {
 	return rtrim( $base, '/' ) . '/' . ltrim( $path, '/' );
 }
+
+//支持中文的递归创建目录
+//iconv方法是为了防止中文乱码,保证可以创建识别中文目录
+//不用iconv方法格式的话,将无法创建中文目录,第三参数的开启递归模式,默认是关闭的
+function createDirectory($path,$encoding="GBK"){
+	mkdir(iconv("UTF-8", $encoding ,$path),0777,true);
+}
 //不定参数路径拼接
 function pathJoin($base, $path) {
 	$newPath = twoPathJoin($base, $path);
@@ -73,6 +80,20 @@ function pathJoin($base, $path) {
     return $newPath;
 }
 
+//拷贝文件到,自动创建目录,自动覆盖
+function fileCopy(string $filePath, string $targetPath){
+	$targetDir = dirname($targetPath);
+	if(!is_dir($targetDir)){
+		createDirectory($targetDir);
+	}
+		
+	if( file_exists($targetPath) ){
+		unlink($targetPath);
+	}
+	copy($filePath,$targetPath);
+	return true;
+}
+
 //枚举子目录
 function scanSubDir($dir,$exclude_names = array()){
 	$filelist = scandir($dir);