#!/usr/bin/env php
<?php

foreach (
    [
        __DIR__ . '/../autoload.php',
        __DIR__ . '/../../autoload.php',
        __DIR__ . '/../vendor/autoload.php',
        __DIR__ . '/vendor/autoload.php',
        __DIR__ . '/../../vendor/autoload.php'
    ] as $file
) {
    if (file_exists($file)) {
        define('AUTOLOAD_PHP_FILE', $file);
        break;
    }    
}

if (!defined('AUTOLOAD_PHP_FILE')) {
     fwrite(STDERR,
        'You need to set up the project dependencies using the following commands:' . PHP_EOL .
        'wget http://getcomposer.org/composer.phar' . PHP_EOL .
        'php composer.phar install' . PHP_EOL
    );
    die(1);
}

require AUTOLOAD_PHP_FILE;

use Chemem\DumbFlower\State;
use function \Chemem\Bingo\Functional\Algorithms\{concat, compose, identity, partialLeft};
use function Chemem\DumbFlower\Console\runConsole;

set_exception_handler(
    function ($exception) { 
        echo str_replace('{exMsg}', $exception->getMessage(), State\CONSOLE_EXCEPTION_TXT);

        return false;
    }
);

set_error_handler(
    function ($errNo, $errMsg) {
       $msg = compose(
           partialLeft('str_replace', '{errCode}', $errNo),
           partialLeft('str_replace', '{errMsg}', $errMsg)
       );
       
       echo $msg(State\CONSOLE_ERROR_TXT);
    }
);

echo concat(
    PHP_EOL, 
    State\CONSOLE_INTRO_TXT, 
    State\CONSOLE_INTRO_AUTHOR,
    identity('')
);

runConsole()->run($argv);
