123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\App\State;
- use Magento\Framework\Filesystem;
- use Magento\Framework\Exception\FileSystemException;
- use Magento\Framework\App\Filesystem\DirectoryList;
- /**
- * A service for cleaning up application state
- */
- class CleanupFiles
- {
- /**
- * File system
- *
- * @var Filesystem
- */
- private $filesystem;
- /**
- * Constructor
- *
- * @param Filesystem $filesystem
- */
- public function __construct(Filesystem $filesystem)
- {
- $this->filesystem = $filesystem;
- }
- /**
- * Clears all files that are subject of code generation
- *
- * @return string[]
- */
- public function clearCodeGeneratedFiles()
- {
- return array_merge(
- $this->clearCodeGeneratedClasses(),
- $this->clearMaterializedViewFiles()
- );
- }
- /**
- * Clears code-generated classes
- *
- * @return string[]
- */
- public function clearCodeGeneratedClasses()
- {
- return array_merge(
- $this->emptyDir(DirectoryList::GENERATED_CODE),
- $this->emptyDir(DirectoryList::GENERATED_METADATA)
- );
- }
- /**
- * Clears materialized static view files
- *
- * @return string[]
- */
- public function clearMaterializedViewFiles()
- {
- return array_merge(
- $this->emptyDir(DirectoryList::STATIC_VIEW),
- $this->emptyDir(DirectoryList::VAR_DIR, DirectoryList::TMP_MATERIALIZATION_DIR)
- );
- }
- /**
- * Clears all files
- *
- * @return string[]
- */
- public function clearAllFiles()
- {
- return array_merge(
- $this->emptyDir(DirectoryList::STATIC_VIEW),
- $this->emptyDir(DirectoryList::VAR_DIR)
- );
- }
- /**
- * Deletes contents of specified directory
- *
- * @param string $code
- * @param string|null $subPath
- * @return string[]
- */
- private function emptyDir($code, $subPath = null)
- {
- $messages = [];
- $dir = $this->filesystem->getDirectoryWrite($code);
- $dirPath = $dir->getAbsolutePath();
- if (!$dir->isExist()) {
- $messages[] = "The directory '{$dirPath}' doesn't exist - skipping cleanup";
- return $messages;
- }
- foreach ($dir->search('*', $subPath) as $path) {
- if ($path !== '.' && $path !== '..') {
- $messages[] = $dirPath . $path;
- try {
- $dir->delete($path);
- } catch (FileSystemException $e) {
- $messages[] = $e->getMessage();
- }
- }
- }
- return $messages;
- }
- }
|