diff options
author | Joas Schilling <nickvergessen@gmx.de> | 2014-05-08 14:22:01 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@gmx.de> | 2014-05-08 14:22:01 +0200 |
commit | 5f2b0fba1e2c30d01717a628e6deb4f93052d38e (patch) | |
tree | b1095d7c48622eeba5be6a93541a256faf721b40 | |
parent | dcfb4cacd86e4694e1938bc5f23a917eccf2b178 (diff) | |
parent | e4beea0c1e2a2dc423d112cf14277b49cd4f1f4e (diff) | |
download | forums-5f2b0fba1e2c30d01717a628e6deb4f93052d38e.tar forums-5f2b0fba1e2c30d01717a628e6deb4f93052d38e.tar.gz forums-5f2b0fba1e2c30d01717a628e6deb4f93052d38e.tar.bz2 forums-5f2b0fba1e2c30d01717a628e6deb4f93052d38e.tar.xz forums-5f2b0fba1e2c30d01717a628e6deb4f93052d38e.zip |
Merge pull request #2410 from Nicofuma/ticket/12325
[ticket/12325] Generate the list of the deleted files and folders
* Nicofuma/ticket/12325:
[ticket/12325] Use \RecursiveDirectoryIterator
[ticket/12325] Doc blocks
[ticket/12325] Change private function to protected
[ticket/12325] Add visibilities
[ticket/12325] Add files located in deleted dirs
[ticket/12325] Generate the list of the deleted files and folders
-rw-r--r-- | build/build.xml | 1 | ||||
-rw-r--r-- | build/build_helper.php | 59 | ||||
-rwxr-xr-x | build/package.php | 13 |
3 files changed, 73 insertions, 0 deletions
diff --git a/build/build.xml b/build/build.xml index 01fb48a383..79b6096c97 100644 --- a/build/build.xml +++ b/build/build.xml @@ -141,6 +141,7 @@ <exec dir="build/old_versions" command="LC_ALL=C diff -crNEBwd release-${version} release-${newversion} > ../new_version/patches/phpBB-${version}_to_${newversion}.patch" escape="false" /> + <exec dir="build/old_versions" command="LC_ALL=C diff -qr release-${version} release-${newversion} | grep 'Only in release-${version}' > ../new_version/patches/phpBB-${version}_to_${newversion}.deleted" escape="false" /> </target> <target name="prepare-new-version"> diff --git a/build/build_helper.php b/build/build_helper.php index d6169b913b..7c75206d6d 100644 --- a/build/build_helper.php +++ b/build/build_helper.php @@ -312,4 +312,63 @@ class build_package return $result; } + + /** + * Collect the list of the deleted files from a list of deleted files and folders. + * + * @param string $deleted_filename The full path to a file containing the list of deleted files and directories + * @param string $package_name The name of the package + * @return array + */ + public function collect_deleted_files($deleted_filename, $package_name) + { + $result = array(); + $file_contents = file($deleted_filename); + + foreach ($file_contents as $filename) + { + $filename = trim($filename); + + if (!$filename) + { + continue; + } + + $filename = str_replace('Only in ' . $package_name, '', $filename); + $filename = ltrim($filename, '/'); + + if (substr($filename, 0, 1) == ':') + { + $replace = ''; + } + else + { + $replace = '/'; + } + + $filename = str_replace(': ', $replace, $filename); + + if (is_dir("{$this->locations['old_versions']}{$package_name}/{$filename}")) + { + $iterator = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator( + "{$this->locations['old_versions']}{$package_name}/{$filename}", + \FilesystemIterator::UNIX_PATHS | \FilesystemIterator::SKIP_DOTS + ), + \RecursiveIteratorIterator::LEAVES_ONLY + ); + + foreach ($iterator as $file_info) + { + $result[] = "{$filename}/{$iterator->getSubPathname()}"; + } + } + else + { + $result[] = $filename; + } + } + + return $result; + } } diff --git a/build/package.php b/build/package.php index 00930abe65..206e3b6640 100755 --- a/build/package.php +++ b/build/package.php @@ -45,6 +45,10 @@ if (sizeof($package->old_packages)) $package->get('patch_directory') . '/phpBB-' . $dest_package_filename . $package->get('new_version_number') . '.patch', $_package_name ); + $diff_file_changes[$_package_name]['deleted'] = $package->collect_deleted_files( + $package->get('patch_directory') . '/phpBB-' . $dest_package_filename . $package->get('new_version_number') . '.deleted', + $_package_name + ); } // Now put those files determined within the correct directories @@ -292,6 +296,15 @@ $update_info = array( $index_contents .= "\t'binary' => array(),\n"; } + if (sizeof($file_contents['deleted'])) + { + $index_contents .= "\t'deleted' => array(\n\t\t'" . implode("',\n\t\t'", $file_contents['deleted']) . "',\n\t),\n"; + } + else + { + $index_contents .= "\t'deleted' => array(),\n"; + } + $index_contents .= ");\n"; $fp = fopen($dest_filename_dir . '/install/update/index.php', 'wt'); |