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

/**
 * 'Remo' commandline front controller
 *
 * Use site aliases to make remote calls.
 */

// If we're running from phar load the phar autoload file.
$pharPath = \Phar::running(true);
if ($pharPath) {
    $autoloaderPath = "$pharPath/vendor/autoload.php";
} else {
    if (file_exists(__DIR__.'/vendor/autoload.php')) {
        $autoloaderPath = __DIR__.'/vendor/autoload.php';
    } elseif (file_exists(__DIR__.'/../../autoload.php')) {
        $autoloaderPath = __DIR__ . '/../../autoload.php';
    } else {
        die("Could not find autoloader. Run 'composer install'.");
    }
}
$classLoader = require $autoloaderPath;

// Customization variables
$argv = $_SERVER['argv'];
$appName = "Remo";
$appVersion = trim(file_get_contents(__DIR__ . '/VERSION'));
$commandClasses = [ \Consolidation\SiteProcess\Remo\RemoCommands::class ];
$selfUpdateRepository = 'consolidation/site-process';
$configPrefix = 'REMO';
$configFilePath = getenv($configPrefix . '_CONFIG') ?: getenv('HOME') . '/.remo/remo.yml';

// Define our Runner, and pass it the command classes we provide.
$runner = new \Robo\Runner($commandClasses);
$runner
  ->setSelfUpdateRepository($selfUpdateRepository)
  ->setConfigurationFilename($configFilePath)
  ->setEnvConfigPrefix($configPrefix)
  ->setClassLoader($classLoader);

// Execute the command and return the result.
$output = new \Symfony\Component\Console\Output\ConsoleOutput();
$statusCode = $runner->execute($argv, $appName, $appVersion, $output);
exit($statusCode);