179 lines
3.9 KiB
PHP
Executable File
179 lines
3.9 KiB
PHP
Executable File
<?php
|
|
|
|
namespace yidas\yii2BowerAsset;
|
|
|
|
/**
|
|
* Installer of Yii2 Bower Asset
|
|
*
|
|
* @author Nick Tsai <myintaer@gmail.com>
|
|
* @version 2.0.12
|
|
*/
|
|
|
|
class Installer
|
|
{
|
|
|
|
/**
|
|
* @var string $sourceBower Bower package path of yii2-bower-asset
|
|
*/
|
|
private static $sourceBower = 'yidas' . DIRECTORY_SEPARATOR
|
|
. 'yii2-bower-asset' . DIRECTORY_SEPARATOR
|
|
. 'bower';
|
|
|
|
/**
|
|
* @var string $bowerVendor Bower vendor path name for Official Yii2
|
|
*/
|
|
private static $bowerVendor = 'bower';
|
|
|
|
/**
|
|
* @var string $aliasFilePath Application class file with alias setting
|
|
*/
|
|
private static $aliasFilePath = 'vendor' . DIRECTORY_SEPARATOR
|
|
. 'yiisoft' . DIRECTORY_SEPARATOR
|
|
. 'yii2' . DIRECTORY_SEPARATOR
|
|
. 'base' . DIRECTORY_SEPARATOR
|
|
. 'Application.php';
|
|
|
|
/**
|
|
* @var $aliasBowerString Original alias setting for Bower of Yii
|
|
*/
|
|
private static $aliasBowerString = "Yii::setAlias('@bower', \$this->_vendorPath . DIRECTORY_SEPARATOR . 'bower');";
|
|
|
|
/**
|
|
* Alias of Clone()
|
|
*/
|
|
public static function bower()
|
|
{
|
|
self::clone();
|
|
}
|
|
|
|
/**
|
|
* Install via cloning package to Bower vendor
|
|
*/
|
|
public static function clone()
|
|
{
|
|
$bowerDir = 'vendor' . DIRECTORY_SEPARATOR . self::$sourceBower;
|
|
|
|
$bowerYiiDir = 'vendor' . DIRECTORY_SEPARATOR . self::$bowerVendor;
|
|
|
|
try {
|
|
|
|
self::deleteDir($bowerYiiDir);
|
|
|
|
self::copyDir($bowerDir, $bowerYiiDir);
|
|
|
|
echo "Clone bower process done\n";
|
|
|
|
} catch (Exception $e) {
|
|
|
|
echo "Error on clone bower process\n";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Install via setting alias of Bower
|
|
*/
|
|
public static function setAlias()
|
|
{
|
|
$file = file_get_contents(self::$aliasFilePath);
|
|
|
|
$newAliasString = str_replace(
|
|
"'".self::$bowerVendor."'",
|
|
"'".self::$sourceBower."'",
|
|
self::$aliasBowerString
|
|
);
|
|
|
|
$file = str_replace(
|
|
self::$aliasBowerString,
|
|
$newAliasString,
|
|
$file
|
|
);
|
|
|
|
$result = file_put_contents(self::$aliasFilePath, $file);
|
|
|
|
if ($result) {
|
|
|
|
echo "Install alias @bower done\n";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Uninstall via re-setting alias of Bower
|
|
*/
|
|
public static function unsetAlias()
|
|
{
|
|
$file = file_get_contents(self::$aliasFilePath);
|
|
|
|
$aliasString = str_replace(
|
|
"'".self::$bowerVendor."'",
|
|
"'".self::$sourceBower."'",
|
|
self::$aliasBowerString
|
|
);
|
|
|
|
$file = str_replace(
|
|
$aliasString,
|
|
self::$aliasBowerString,
|
|
$file
|
|
);
|
|
|
|
$result = file_put_contents(self::$aliasFilePath, $file);
|
|
|
|
if ($result) {
|
|
|
|
echo "Uninstall alias @bower done\n";
|
|
}
|
|
}
|
|
|
|
private static function deleteDir($dirPath)
|
|
{
|
|
if (!is_dir($dirPath)) {
|
|
|
|
return;
|
|
}
|
|
|
|
if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') {
|
|
|
|
$dirPath .= '/';
|
|
}
|
|
|
|
$files = glob($dirPath . '{,.}[!.,!..]*',GLOB_BRACE);
|
|
|
|
foreach ($files as $file) {
|
|
|
|
if (is_dir($file)) {
|
|
|
|
self::deleteDir($file);
|
|
|
|
} else {
|
|
|
|
unlink($file);
|
|
}
|
|
}
|
|
|
|
rmdir($dirPath);
|
|
}
|
|
|
|
private static function copyDir($src, $dst)
|
|
{
|
|
$dir = opendir($src);
|
|
|
|
@mkdir($dst);
|
|
|
|
while(false !== ( $file = readdir($dir)) ) {
|
|
|
|
if (( $file != '.' ) && ( $file != '..' )) {
|
|
|
|
if ( is_dir($src . '/' . $file) ) {
|
|
|
|
self::copyDir($src . '/' . $file,$dst . '/' . $file);
|
|
|
|
} else {
|
|
|
|
copy($src . '/' . $file,$dst . '/' . $file);
|
|
}
|
|
}
|
|
}
|
|
|
|
closedir($dir);
|
|
}
|
|
}
|