elviss 2 anos atrás
pai
commit
d40e83a054
2 arquivos alterados com 40 adições e 18 exclusões
  1. 4 2
      src/HelperClass.php
  2. 36 16
      src/PackageClass.php

+ 4 - 2
src/HelperClass.php

@@ -15,8 +15,10 @@ class HelperClass
         $vendorDir = $composer->getConfig()->get('vendor-dir');
 		$rootPkg  = $composer->getPackage();
 		$vendorPkgs = $composer->getRepositoryManager()->getLocalRepository()->getPackages();
-		PackageClass::postUpdate($vendorDir,$rootPkg,$vendorPkgs);
-		print("---postUpdate finished---");
+		if( PackageClass::postUpdate($vendorDir,$rootPkg,$vendorPkgs) )
+			print("---postUpdate finished---");
+		else
+			print("---postUpdate failed---");
     }
 
     public static function postAutoloadDump(Event $event)

+ 36 - 16
src/PackageClass.php

@@ -10,7 +10,10 @@ class PackageClass
 	public static function postUpdate($vendorDir,$rootPkg,$vendorPkgs)
 	{
 		//初始化
-		self::initialize();
+		if(! self::initialize($vendorDir)){
+			self::setUpdateFailed('INITIALIZE_FAILED');
+			return false;
+		}
 		
 		//依赖库都已下载,默认先给个进度
 		self::updateProgress(0,100);
@@ -20,6 +23,10 @@ class PackageClass
 		
 		//顶层仓库操作
 		self::postUpdateRootPkg($vendorDir,$rootPkg);
+		
+		//全部操作完毕
+		self::setUpdateOK(true);
+		return true;
 	}
 	
 	private static function postUpdateVendorPkgs($vendorDir,$vendorPkgs)
@@ -63,9 +70,6 @@ class PackageClass
 		
 		//注册自启动程序
 		self::registerAutorun($packageInfo);
-		
-		//更新部署进度
-		self::updateProgress(2,100);
 	}
 	//初始化
 	private static function initialize($vendorDir)
@@ -85,28 +89,44 @@ class PackageClass
 		//设置日志文件路径
 		if(! defined(LOG_PATH)){
 			$logPath = pathJoin($distributeDir,'log.txt');
-			define('LOG_PATH',getLogPath($logPath));
+			define('LOG_PATH',$logPath);
 		}
 
+		//设置进度文件路径
+		if(! defined(PROGRESS_PATH)){
+			$progressPath = pathJoin($distributeDir,'progress.txt');
+			define('PROGRESS_PATH',$progressPath);
+		}
+		
 		//获取部署配置信息
-		if(! self::$config){
-			$cfgPath = pathJoin($distributeDir,'config.json');
-			$config = loadConfig($cfgPath);
-			if(!$config){
-				printf("Failed to load distribute config -- %s\n",$cfgPath);
-				return false;
-			}
-			$config['progress.txt'] = pathJoin($distributeDir,'progress.txt');
-			self::$config = $config;
+		$cfgPath = pathJoin($distributeDir,'config.json');
+		$config = loadConfig($cfgPath);
+		if(!$config){
+			printf("Failed to load distribute config -- %s\n",$cfgPath);
+			return false;
 		}
+		self::$config = $config;
+
 		return true;
 	}
 	
 	private static function updateProgress($step,$percent)
 	{
-		file_put_contents(self::$config['progress.txt'],strval($percent));
+		file_put_contents(PROGRESS_PATH,strval($percent));
+	}
+	private static function setUpdateFailed($msg)
+	{
+		file_put_contents(PROGRESS_PATH,"FAIL:" . $msg);
+	}
+	private static function setUpdateOK($restart)
+	{
+		if($restart){
+			file_put_contents(PROGRESS_PATH,"OK:NEED_RESTART");
+		}
+		else{
+			file_put_contents(PROGRESS_PATH,"OK:NO_RESTART");
+		}
 	}
-
 	//获取包相关信息
 	private static function getPackageInfo($vendorDir,$repoDir,$pkg)
 	{