--all run over all defined core tables
--diff show differences between the expected and live table defs
--raw skip compatibility filtering for diffs
- --update dump SQL that would be run to update or create this table
+ --create dump SQL that would be run to update or create this table
--build dump SQL that would be run to create this table fresh
+ --checksum just output checksums from the source schema defs
END_OF_CHECKSCHEMA_HELP;
-$longoptions = array('diff', 'all', 'build', 'update', 'raw');
-require_once INSTALLDIR.'/scripts/commandline.inc';
+$longoptions = array('diff', 'all', 'create', 'update', 'raw', 'checksum');
+require_once INSTALLDIR.'/scripts/commandline.inc.php';
function indentOptions($indent)
{
if ($section == 'fields') {
// this shouldn't be needed maybe... wait what?
}
- $diff = $schema->diffArrays($old, $def, $section, $compare);
+ $diff = $schema->diffArrays($old, $def, $section);
$chunks = array('del', 'mod', 'add');
foreach ($chunks as $chunk) {
if ($diff[$chunk]) {
$def['primary keys'] = array('primary key' => $def['primary key']);
unset($def['primary key']);
}
+ if (isset($def['description'])) {
+ $def['descriptions'] = array('description' => $def['description']);
+ unset($def['description']);
+ }
return $def;
}
+function dumpChecksum($tableName)
+{
+ $schema = Schema::get();
+ $def = getCoreSchema($tableName);
+
+ $updater = new SchemaUpdater($schema);
+ $checksum = $updater->checksum($def);
+ $old = @$updater->checksums[$tableName];
+
+ if ($old == $checksum) {
+ echo "OK $checksum $tableName\n";
+ } else if (!$old) {
+ echo "NEW $checksum $tableName\n";
+ } else {
+ echo "MOD $checksum $tableName (was $old)\n";
+ }
+}
+
if (have_option('all')) {
$args = getCoreTables();
}
foreach ($args as $tableName) {
if (have_option('diff')) {
dumpDiff($tableName, !have_option('raw'));
- } else if (have_option('build')) {
+ } else if (have_option('create')) {
dumpBuildTable($tableName);
} else if (have_option('update')) {
dumpEnsureTable($tableName);
+ } else if (have_option('checksum')) {
+ dumpChecksum($tableName);
} else {
dumpTable($tableName, true);
}
}
} else {
show_help($helptext);
-}
\ No newline at end of file
+}