From 1d493ca1229784dfc4b32838dfdee1b91bd5fb28 Mon Sep 17 00:00:00 2001 From: AD7six Date: Sun, 1 May 2011 23:07:22 +0200 Subject: [PATCH] add a function to make sure file names match the class they contain --- lib/Cake/Console/Command/UpgradeShell.php | 36 +++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/lib/Cake/Console/Command/UpgradeShell.php b/lib/Cake/Console/Command/UpgradeShell.php index e1a00e626..8799d293b 100644 --- a/lib/Cake/Console/Command/UpgradeShell.php +++ b/lib/Cake/Console/Command/UpgradeShell.php @@ -58,6 +58,10 @@ class UpgradeShell extends Shell { $Folder->move($new); } } + + foreach($moves as $new) { + $this->_filesMatchClass($new); + } } /** @@ -268,6 +272,38 @@ class UpgradeShell extends Shell { $this->_filesRegexpUpdate($patterns); } + protected function _filesMatchClass($path) { + $paths = $this->_paths; + $this->_paths = array($path); + + $this->_findFiles('php'); + foreach ($this->_files as $file) { + $contents = file_get_contents($file); + preg_match('@class (\S*) @', $contents, $match); + if (!$match) { + continue; + } + + $class = $match[1]; + + $filename = basename($file); + if ($filename === $class . '.php') { + continue; + } + + $new = dirname($file); + if ($new) { + $new .= DS; + } + $new .= $class . '.php'; + + $this->out('Moving ' . $file . ' to ' . $new, 1, Shell::VERBOSE); + rename($file, $new); + } + + $this->_paths = $paths; + } + /** * Updates files based on regular expressions. *