Fix #215: Remove files from other env which not exists in current env (#479)

This commit is contained in:
Deryabin Sergey
2020-09-15 00:07:38 +03:00
committed by GitHub
parent be107e3e39
commit 05fef12c02
8 changed files with 63 additions and 7 deletions

View File

@@ -36,7 +36,7 @@ Después de instalar la aplicación, tienes que realizar los siguientes pasos pa
Por otra parte, en producción ejecuta `init` con el modo no interactivo.
```
php /path/to/yii-application/init --env=Production --overwrite=All
php /path/to/yii-application/init --env=Production --overwrite=All --delete=All
```
2. Crea una nueva base de datos y ajusta la configuración de `components['db']` en `common/config/main-local.php` como corresponde.

View File

@@ -37,7 +37,7 @@ Après que vous avez installé l'application, vous devez accomplir les étapes s
Si vous l'automatisez à l'aide d'un script, vous pouvez exécuter `init` en mode non interactif.
```
/path/to/php-bin/php /path/to/yii-application/init --env=Production --overwrite=All
/path/to/php-bin/php /path/to/yii-application/init --env=Production --overwrite=All --delete=All
```
2. Créez une nouvelle base de données et complétez la configuration de `components['db']` dans `common/config/main-local.php` en conséquence.

View File

@@ -41,7 +41,7 @@ Bower と NPM の依存パッケージを Composer によって管理するた
スクリプトで自動化する場合は、非対話モードで `init` を実行します。
```
/path/to/php-bin/php /path/to/yii-application/init --env=Development --overwrite=All
/path/to/php-bin/php /path/to/yii-application/init --env=Development --overwrite=All --delete=All
```
2. 新しいデータベースを作成し、それに従って `/path/to/yii-application/common/config/main-local.php` の `components['db']` の構成情報を修正します。

View File

@@ -39,7 +39,7 @@ zrobić raz na każdym nowym środowisku.
W przypadku zautomatyzowanego procesu z użyciem skryptu, możesz uruchomić `init` w trybie nieinteraktywnym.
```
/path/to/php-bin/php /path/to/yii-application/init --env=Production --overwrite=All
/path/to/php-bin/php /path/to/yii-application/init --env=Production --overwrite=All --delete=All
```
2. Stwórz nową bazę danych i zmodyfikuj odpowiednio jej dane w kluczu `components['db']` w pliku `common/config/main-local.php`.

View File

@@ -39,7 +39,7 @@ para inicializar a aplicação, sendo necessário realizá-los apenas uma vez no
Caso queria realizar a automação do processo por meio de um script, você pode executar o comando `init` em modo não interativo.
```
/caminho/para/binario-php/php /caminho/para/aplicacao-yii/init --env=Production --overwrite=All
/caminho/para/binario-php/php /caminho/para/aplicacao-yii/init --env=Production --overwrite=All --delete=All
```
2. Crie um novo banco de dados e ajuste a configuração `components['db']` em `common/config/main-local.php` adequadamente.

View File

@@ -36,7 +36,7 @@
如果使用脚本自动化,可以在非交互模式下执行 `init` 。
```
/path/to/php-bin/php /path/to/yii-application/init --env=Production --overwrite=All
/path/to/php-bin/php /path/to/yii-application/init --env=Production --overwrite=All --delete=All
```
2. 创建一个新的数据库,并相应地调整 `common/config/main-local.php` 中的 `components['db']` 配置。

View File

@@ -41,7 +41,7 @@ the installed application. You only need to do these once for all.
If you automate it with a script you can execute `init` in non-interactive mode.
```
/path/to/php-bin/php /path/to/yii-application/init --env=Development --overwrite=All
/path/to/php-bin/php /path/to/yii-application/init --env=Development --overwrite=All --delete=All
```
2. Create a new database and adjust the `components['db']` configuration in `/path/to/yii-application/common/config/main-local.php` accordingly.

56
init
View File

@@ -78,6 +78,30 @@ foreach ($files as $file) {
}
}
$filesToRemove = [];
$skipFiles = !empty($env['skipFiles']) ? $env['skipFiles'] : [];
foreach(array_column($envs, 'path') as $envPath) {
if ($env['path'] === $envPath) continue;
$filesToRemove =
array_merge(
$filesToRemove,
array_diff(getFileList("$root/environments/{$envPath}"), $files, $filesToRemove, $skipFiles)
);
}
$filesToRemove = array_filter($filesToRemove, 'file_exists');
if ($filesToRemove) {
echo "\n Remove files from other environments ...\n\n";
$all = false;
foreach ($filesToRemove as $file) {
if (!removeFile($root, $file, $all, $params)) {
break;
}
}
echo "\n";
}
$callbacks = ['setCookieValidationKey', 'setWritable', 'setExecutable', 'createSymlink'];
foreach ($callbacks as $callback) {
if (!empty($env[$callback])) {
@@ -151,6 +175,38 @@ function copyFile($root, $source, $target, &$all, $params)
return true;
}
function removeFile($root, $target, &$all, $params)
{
if (is_file($root . '/' . $target)) {
if ($all) {
echo " delete $target\n";
} else {
echo " delete $target\n";
echo " ...confirm? [Yes|No|All|Quit] ";
$answer = !empty($params['delete']) ? $params['delete'] : trim(fgets(STDIN));
if (!strncasecmp($answer, 'q', 1)) {
return false;
} else {
if (!strncasecmp($answer, 'y', 1)) {
echo " delete $target\n";
} else {
if (!strncasecmp($answer, 'a', 1)) {
echo " delete $target\n";
$all = true;
} else {
echo " skip $target\n";
return true;
}
}
}
}
return unlink($root . '/' . $target);
}
return true;
}
function getParams()
{
$rawParams = [];