123 lines
4.1 KiB
Plaintext
123 lines
4.1 KiB
Plaintext
<?php
|
|
|
|
use Wt\Core\App\ModuleEntity;
|
|
|
|
require './../wt.core/include.php';
|
|
|
|
$curPath = __DIR__;
|
|
$newPath = realpath($argv[1]);
|
|
$newEntity = __getModuleEntity($newPath);
|
|
$nullableEntity = __getModuleEntity(__DIR__);
|
|
|
|
function copy_folder_safe($d1, $d2, $upd = true, $force = true, $exclude = [], $handler = null) {
|
|
$cm = 0;
|
|
preg_filter($exclude, $exclude, $d1, -1, $cm);
|
|
if($cm){
|
|
echo 'skip ' . $d1 . PHP_EOL;
|
|
return;
|
|
}
|
|
if(is_callable($handler)){
|
|
call_user_func_array($handler, [$d1, &$d2]);
|
|
}
|
|
if ( is_dir( $d1 ) ) {
|
|
$d2 = mkdir_safe( $d2, $force );
|
|
if (!$d2) {
|
|
return;
|
|
}
|
|
$d = dir( $d1 );
|
|
while ( false !== ( $entry = $d->read() ) ) {
|
|
if ( $entry != '.' && $entry != '..' )
|
|
copy_folder_safe( "$d1/$entry", "$d2/$entry", $upd, $force, $exclude, $handler);
|
|
}
|
|
$d->close();
|
|
}
|
|
else {
|
|
$ok = copy_safe( $d1, $d2, $upd );
|
|
}
|
|
}
|
|
|
|
function mkdir_safe( $dir, $force ) {
|
|
if (file_exists($dir)) {
|
|
if (is_dir($dir)) return $dir;
|
|
elseif (!$force) return false;
|
|
unlink($dir);
|
|
}
|
|
return (mkdir($dir, 0777, true)) ? $dir : false;
|
|
}
|
|
|
|
function copy_safe ($f1, $f2, $upd) {
|
|
$time1 = filemtime($f1);
|
|
if (file_exists($f2)) {
|
|
$time2 = filemtime($f2);
|
|
if ($time2 >= $time1 && $upd) return false;
|
|
}
|
|
$ok = copy($f1, $f2);
|
|
if ($ok) touch($f2, $time1);
|
|
return $ok;
|
|
}
|
|
|
|
function fs_log($str) {
|
|
return;
|
|
$log = fopen('./fs_log.txt', 'a');
|
|
$time = date('Y-m-d H:i:s');
|
|
fwrite($log, "$str ($time)\n");
|
|
fclose($log);
|
|
}
|
|
|
|
function _fix(ModuleEntity $newEntity, ModuleEntity $nullableEntity){
|
|
$d = new RecursiveDirectoryIterator( $newEntity->getPath() );
|
|
foreach( new RecursiveIteratorIterator( $d, 1 ) as $path ){
|
|
if( is_file( $path ) && str_ends_with($path, '.php')){
|
|
$orig_file = file_get_contents($path);
|
|
|
|
$new_file = $orig_file;
|
|
$cr = 0;
|
|
$new_file = str_replace($nullableEntity->getLangPrefix(), $newEntity->getLangPrefix(), $new_file, $cr);
|
|
$new_file = str_replace($nullableEntity->getId(), $newEntity->getId(), $new_file, $cr);
|
|
$new_file = str_replace($nullableEntity->getPrefix(), $newEntity->getPrefix(), $new_file, $cr);
|
|
$new_file = str_replace($nullableEntity->getNamespace(), $newEntity->getNamespace(), $new_file, $cr);
|
|
|
|
$new_file = str_replace(
|
|
ucfirst($nullableEntity->getProductCode()) . ': ' . ucfirst($nullableEntity->getProductCode()),
|
|
ucfirst($newEntity->getProductCode()) . ': ' . ucfirst($newEntity->getProductCode()),
|
|
$new_file,
|
|
$cr
|
|
);
|
|
|
|
$new_file = str_replace(ucfirst($nullableEntity->getProductCode()), ucfirst($newEntity->getProductCode()), $new_file, $cr);
|
|
$new_file = str_replace(ucfirst($nullableEntity->getCompanyCode()), ucfirst($newEntity->getCompanyCode()), $new_file, $cr);
|
|
$new_file = str_replace($nullableEntity->getProductCode(), $newEntity->getProductCode(), $new_file, $cr);
|
|
$new_file = str_replace($nullableEntity->getCompanyCode(), $newEntity->getCompanyCode(), $new_file, $cr);
|
|
|
|
|
|
|
|
echo $cr . ' ' .$path . PHP_EOL;
|
|
|
|
if($orig_file != $new_file){
|
|
file_put_contents($path, $new_file);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
echo $newEntity->getId() . PHP_EOL;
|
|
|
|
|
|
copy_folder_safe($nullableEntity->getPath(), $newEntity->getPath(), true, true, [
|
|
'/\.git$/',
|
|
'/\.module\.json/',
|
|
'/clone\.php/',
|
|
'/readme\.md/',
|
|
'/src\/\.env$/',
|
|
'/src\/config\.php$/',
|
|
], function ($d1, &$d2) use ($nullableEntity, $newEntity){
|
|
$lastModuleName = collect(explode('.', $newEntity->fields()->id))->last();
|
|
$lastNullableModuleName = collect(explode('.', $nullableEntity->fields()->id))->last();
|
|
|
|
|
|
$d2 = str_replace(ucfirst($lastNullableModuleName), ucfirst($lastModuleName), $d2, $cr);
|
|
$d2 = str_replace(strtolower($lastNullableModuleName), strtolower($lastModuleName), $d2, $cr);
|
|
});
|
|
|
|
_fix($newEntity, $nullableEntity);
|