#!/usr/bin/env php . */ define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); $helptext = << "; } if (is_array($arr)) { print "array({$inlf}"; $n = 0; foreach ($arr as $key => $row) { $n++; prettyDumpArray($row, $key, $subIndent); if ($n < count($arr)) { print "$insep$inlf"; } } // hack! print "{$inendspace})"; } else { print var_export($arr, true); } } function getCoreSchema($tableName) { $schema = array(); include INSTALLDIR . '/db/core.php'; return $schema[$tableName]; } function dumpTable($tableName, $live) { if ($live) { $schema = Schema::get(); $def = $schema->getTableDef($tableName); } else { // hack $def = getCoreSchema($tableName); } prettyDumpArray($def, $tableName); echo "\n"; } function showDiff($a, $b) { $fnameA = tempnam(sys_get_temp_dir(), 'defined-diff-a'); file_put_contents($fnameA, $a); $fnameB = tempnam(sys_get_temp_dir(), 'detected-diff-b'); file_put_contents($fnameB, $b); $cmd = sprintf('diff -U 100 %s %s', escapeshellarg($fnameA), escapeshellarg($fnameB)); passthru($cmd); unlink($fnameA); unlink($fnameB); } if (count($args)) { foreach ($args as $tableName) { if (have_option('diff')) { ob_start(); dumpTable($tableName, false); $defined = ob_get_clean(); ob_start(); dumpTable($tableName, true); $detected = ob_get_clean(); showDiff($defined, $detected); } else { dumpTable($tableName, true); } } } else { show_help($helptext); }