#!/usr/bin/php
<?php

namespace Dbmover\Core;

use Monomelodies\Kingconf\Config;
use PDOException;
use PDO;

/**
 * Main dbMover executable.
 */
$start = microtime(true);

if (!ini_get('date.timezone')) {
    ini_set('date.timezone', 'UTC');
}

fwrite(STDOUT, "DbMover 0.6.1 by Marijn Ophorst\n\n");

if (!file_exists(getcwd().'/vendor/autoload.php')) {
    fwrite(STDERR, <<<EOT
\033[1;31mError: \033[0mYou need to set up the project dependencies using the following commands:

\033[1;33mwget http://getcomposer.org/composer.phar
php composer.phar install\033[0m

DbMover should be run from the root of your repository, i.e. the same directory
where `composer.json` lives.

EOT
    );
    die(1);
}
$autoloader = require getcwd().'/vendor/autoload.php';

try {
    $config = (object)(array)(new Config(getcwd().'/dbmover.json'));
} catch (Kingconf\Exception $e) {
    fwrite(STDERR, <<<EOT
\033[1;31mError: Config file `dbmover.json` not found or invalid.\033[0m

EOT
    );
    die(1);
}

foreach ($config as $dsn => $settings) {
    if (isset($argv[2])) {
        $settings['user'] = $argv[1];
        $settings['pass'] = $argv[2];
    } elseif (isset($argv[1])) {
        $settings['pass'] = $argv[1];
    }
    if (!isset($settings['user'])) {
        $settings['user'] = get_current_user();
    }
    preg_match('@^(\w+):@', $dsn, $vendor);
    $vendor = ucfirst(strtolower($vendor[1]));
    putenv("DBMOVER_VENDOR=$vendor");
    $settings[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $mover = new Loader($dsn, $settings);
    unset($mover);
}

