|
@@ -5,8 +5,52 @@ include "Utility.php";
|
|
|
|
|
|
class PackageClass
|
|
class PackageClass
|
|
{
|
|
{
|
|
|
|
+ private static $config = null; //配置信息
|
|
|
|
+ private static $repoNames = null; //所有包名
|
|
|
|
+ private static $totalUseSpace = 0; //整体占用空间
|
|
//当所有包都安装完毕后
|
|
//当所有包都安装完毕后
|
|
- public static function index($vendorDir,$repoName){
|
|
|
|
|
|
+ public static function postUpdate($vendorDir){
|
|
|
|
+ //初始化数据
|
|
|
|
+ if(!self::initialize()){
|
|
|
|
+ exit();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //逐个仓库操作
|
|
|
|
+ self::updateProgress(0);
|
|
|
|
+ foreach(self::$repoNames as $i=>$repoName){
|
|
|
|
+ //获取顶层包信息
|
|
|
|
+ $packageInfo = self::getPackageInfo(self::$config,$vendorDir,$repoName);
|
|
|
|
+ if(!$packageInfo){
|
|
|
|
+ exit();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //获取当前包的module文件
|
|
|
|
+ self::fetchModuleFiles($packageInfo);
|
|
|
|
+
|
|
|
|
+ //获取当前包的common文件
|
|
|
|
+ self::fetchCommonFiles($packageInfo);
|
|
|
|
+
|
|
|
|
+ //获取当前包的config文件
|
|
|
|
+ self::fetchConfigFiles($packageInfo);
|
|
|
|
+
|
|
|
|
+ //顶层包的额外工作
|
|
|
|
+ if($repoName == "."){
|
|
|
|
+ //注册全局路径
|
|
|
|
+ self::registerPath($packageInfo);
|
|
|
|
+ //注册自启动程序
|
|
|
|
+ self::registerAutorun($packageInfo);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //更新部署进度
|
|
|
|
+ $percent = intval(100.0 * ($i+1) / count(self::$repoNames));
|
|
|
|
+ self::updateProgress($percent);
|
|
|
|
+ }
|
|
|
|
+ self::updateProgress(100);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //初始化
|
|
|
|
+ private static initialize($vendorDir){
|
|
//创建.distribute目录
|
|
//创建.distribute目录
|
|
$distributeDir = getDistributeDir($vendorDir);
|
|
$distributeDir = getDistributeDir($vendorDir);
|
|
if( !file_exists($distributeDir) ){
|
|
if( !file_exists($distributeDir) ){
|
|
@@ -17,43 +61,32 @@ class PackageClass
|
|
if(! defined(LOG_PATH)){
|
|
if(! defined(LOG_PATH)){
|
|
define('LOG_PATH',getLogPath($distributeDir))
|
|
define('LOG_PATH',getLogPath($distributeDir))
|
|
}
|
|
}
|
|
-
|
|
|
|
- //获取配置信息
|
|
|
|
|
|
+
|
|
|
|
+ //获取部署配置信息
|
|
$cfgPath = getConfigPath($distributeDir);
|
|
$cfgPath = getConfigPath($distributeDir);
|
|
$config = loadConfig($cfgPath);
|
|
$config = loadConfig($cfgPath);
|
|
if(!$config){
|
|
if(!$config){
|
|
printf("Failed to load distribute config -- %s\n",$cfgPath);
|
|
printf("Failed to load distribute config -- %s\n",$cfgPath);
|
|
- exit();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //获取当前包信息
|
|
|
|
- $packageInfo = self::getPackageInfo($config,$vendorDir,$repoName);
|
|
|
|
- if(!$packageInfo){
|
|
|
|
- exit();
|
|
|
|
|
|
+ return false;
|
|
}
|
|
}
|
|
|
|
+ $config['progress.txt'] = pathJoin($distributeDir,'progress.txt');
|
|
|
|
|
|
- //获取当前包的module文件
|
|
|
|
- self::fetchModuleFiles($packageInfo);
|
|
|
|
|
|
+ self::$config = $config;
|
|
|
|
+ //获取所有依赖仓库
|
|
|
|
+ self::$repoNames = scanRepoNames($vendorDir);
|
|
|
|
|
|
- //获取当前包的common文件
|
|
|
|
- self::fetchCommonFiles($packageInfo);
|
|
|
|
-
|
|
|
|
- //获取当前包的config文件
|
|
|
|
- self::fetchConfigFiles($packageInfo);
|
|
|
|
|
|
+ //获取所有依赖仓库的配置信息
|
|
|
|
+ $repoConfigs = loadRepoConfigs($vendorDir,self::$repoNames);
|
|
|
|
|
|
- //顶层包的额外工作
|
|
|
|
- if($repoName == ""){
|
|
|
|
- //注册全局路径
|
|
|
|
- self::registerPath($packageInfo);
|
|
|
|
- //注册自启动程序
|
|
|
|
- self::registerAutorun($packageInfo);
|
|
|
|
- }
|
|
|
|
|
|
+ //统计总体所需空间
|
|
|
|
+ self::$totalUseSpace = getTotalUseSpace($repoConfigs);
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
|
|
|
|
//获取包相关信息
|
|
//获取包相关信息
|
|
private static function getPackageInfo($config,$vendorDir, $repoName){
|
|
private static function getPackageInfo($config,$vendorDir, $repoName){
|
|
$rootDir = dirname($vendorDir);
|
|
$rootDir = dirname($vendorDir);
|
|
- if($repoName == ""){
|
|
|
|
|
|
+ if($repoName == "."){
|
|
$repoDir = $rootDir; //最上层包所在目录
|
|
$repoDir = $rootDir; //最上层包所在目录
|
|
}
|
|
}
|
|
else{
|
|
else{
|
|
@@ -193,5 +226,9 @@ class PackageClass
|
|
}
|
|
}
|
|
|
|
|
|
private static function registerAutorun($packageInfo){
|
|
private static function registerAutorun($packageInfo){
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static function updateProgress($progress){
|
|
|
|
+ file_put_contents(self::$config['progress.txt'],strval($progress));
|
|
|
|
+ }
|
|
}
|
|
}
|