|
@@ -5,21 +5,53 @@ include "Utility.php";
|
|
|
|
|
|
class PackageClass
|
|
|
{
|
|
|
- private static $config;
|
|
|
- public static function index($vendorDir, $repoName)
|
|
|
- {
|
|
|
- //读取配置信息
|
|
|
- $config = parseDistributeConfig();
|
|
|
+ //当所有包都安装完毕后
|
|
|
+ public static function postUpdate($vendorDir, $repoName){
|
|
|
+ //获取配置信息
|
|
|
+ $cfgPath = getDistributeConfigPath($vendorDir);
|
|
|
+ $config = loadDistributeConfig($cfgPath);
|
|
|
+ if(!$config){
|
|
|
+ printf("Failed to load distribute config -- %s\n",$cfgPath);
|
|
|
+ exit();
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取当前包信息
|
|
|
+ $packageInfo = self::getPackageInfo($config,$vendorDir, $repoName);
|
|
|
+
|
|
|
+ //下载当前包的add文件
|
|
|
+ $packageFiles = getPackageFiles($packageInfo['configPath']);
|
|
|
+ self::fetchAddFiles($packageInfo,$packageFiles['add-files']);
|
|
|
+
|
|
|
+ //下载当前包的bin文件
|
|
|
+ self::fetchBinFiles($packageInfo,$packageFiles['bin-files']);
|
|
|
+
|
|
|
+ //下载当前包的copy文件
|
|
|
+ self::fetchCopyFiles($packageInfo,$packageFiles['copy-files']);
|
|
|
+ }
|
|
|
+ //当某个依赖包安装完毕后
|
|
|
+ public static function postPackageInstall($vendorDir, $repoName){
|
|
|
+ //获取配置信息
|
|
|
+ $cfgPath = getDistributeConfigPath($vendorDir);
|
|
|
+ $config = loadDistributeConfig($cfgPath);
|
|
|
+ if(!$config){
|
|
|
+ printf("Failed to load distribute config -- %s\n",$cfgPath);
|
|
|
+ exit();
|
|
|
+ }
|
|
|
|
|
|
//获取当前包信息
|
|
|
$packageInfo = self::getPackageInfo($config,$vendorDir, $repoName);
|
|
|
|
|
|
- //下载当前包的文件
|
|
|
+ //下载当前包的add文件
|
|
|
$packageFiles = getPackageFiles($packageInfo['configPath']);
|
|
|
- self::fetchFiles($packageInfo,$packageFiles['files']);
|
|
|
+ self::fetchAddFiles($packageInfo,$packageFiles['add-files']);
|
|
|
|
|
|
//下载当前包的bin文件
|
|
|
self::fetchBinFiles($packageInfo,$packageFiles['bin-files']);
|
|
|
+
|
|
|
+ //下载当前包的copy文件
|
|
|
+ self::fetchCopyFiles($packageInfo,$packageFiles['copy-files']);
|
|
|
+ }
|
|
|
+ public static function postPackageUpdate($vendorDir, $repoName){
|
|
|
}
|
|
|
public static function setDevMode($devMode){
|
|
|
}
|
|
@@ -34,7 +66,7 @@ class PackageClass
|
|
|
else{ //其他依赖包的信息
|
|
|
$packageDir = $vendorDir . '/' . $repoName;
|
|
|
}
|
|
|
- $cacheDir = dirname($vendorDir) . '/.cache/' . $repoName;
|
|
|
+ $cacheDir = pathJoin($config['cache-dir'],$repoName);
|
|
|
|
|
|
//获取最上层包配置的 bin-dir
|
|
|
$cfgPath = dirname($vendorDir)."/composer.json";
|
|
@@ -47,12 +79,12 @@ class PackageClass
|
|
|
"configPath" => $packageDir."/composer.json",
|
|
|
"cacheDir" => $cacheDir,
|
|
|
"binDir" => $binDir,
|
|
|
- "ossUrl" => $config['OSS_URL'],
|
|
|
+ "ossHost" => $config['oss-host'],
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- //下载包文件
|
|
|
- private static function fetchFiles($packageInfo,$files){
|
|
|
+ //下载包add文件
|
|
|
+ private static function fetchAddFiles($packageInfo,$files){
|
|
|
$cacheDir = $packageInfo['cacheDir'];
|
|
|
$repoName = $packageInfo['repoName'];
|
|
|
$packageDir = $packageInfo['packageDir'];
|
|
@@ -109,4 +141,32 @@ class PackageClass
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //下载包copy文件
|
|
|
+ private static function fetchCopyFiles($packageInfo,$binFiles){
|
|
|
+ $cacheDir = $packageInfo['cacheDir'];
|
|
|
+ $repoName = $packageInfo['repoName'];
|
|
|
+ $binDir = $packageInfo['binDir'];
|
|
|
+ $ossUrl = $packageInfo['ossUrl'];
|
|
|
+ if(! $binDir)
|
|
|
+ return;
|
|
|
+ if(! $binFiles)
|
|
|
+ return;
|
|
|
+ foreach($binFiles as $fileName){
|
|
|
+ printf("[%s] fetching binfile -- %s\n",$repoName,$fileName);
|
|
|
+ //下载文件到缓存区
|
|
|
+ $filePath = downloadToDir($ossUrl,$repoName,$fileName,$cacheDir);
|
|
|
+ if(! $filePath ){
|
|
|
+ printf("[%s] fetch binfile failed -- %s\n",$repoName,$fileName);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 解压文件
|
|
|
+ if( isZipFile($fileName) ){
|
|
|
+ if(! unzipFile($filePath,$binDir)) {
|
|
|
+ printf("[%s] unzip binfile failed -- %s\n ",$repoName,$fileName);
|
|
|
+ unlink($filePath);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|