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

declare(strict_types = 1);

use \Interactiv4\SemanticVersioning\NextVersionIncrease;

$autoloadLocations = [
    getcwd() . '/vendor/autoload.php',
    __DIR__ . '/../autoload.php',
    __DIR__ . '/../../autoload.php',
    __DIR__ . '/../../../autoload.php',
    __DIR__ . '/../../../../autoload.php',
];

$loaded = false;
foreach ($autoloadLocations as $autoload) {
    if (is_file($autoload)) {
        require_once($autoload);
        $loaded = true;
    }
}

if (!$loaded) {
    fwrite(STDERR,
           'You must set up the project dependencies, run the following commands:' . PHP_EOL .
           'curl -s http://getcomposer.org/installer | php' . PHP_EOL .
           'php composer.phar install' . PHP_EOL
    );
    exit(1);
}

/**
 * @return string
 */
function getHelp()
{
    return "Required arguments:" . PHP_EOL
           . PHP_EOL
           . " - nextVersionIncrease :\tmajor|minor|patch" . PHP_EOL
           . PHP_EOL
           . "Optional arguments:" . PHP_EOL
           . " - path                :\tauto|[path-to-composer-json] (default: auto)" . PHP_EOL
           . " - isDryRun            :\t0|1 (default: 0)" . PHP_EOL
           . PHP_EOL
        ;
}

// Remove script name
array_shift($argv);

if (isset($argv[0]) && ($argv[0] == '-h' || $argv[0] == '--help')) {
    fwrite(STDOUT, getHelp());
    exit(0);
}

if (count($argv) < 1 || count($argv) > 3) {
    fwrite(STDERR, 'Invalid number of arguments.' . PHP_EOL . getHelp());
    exit(1);
}

// Init path argument
$argv[1] = isset($argv[1]) && $argv[1] !== 'auto' ? $argv[1] : getcwd();

// Init dry run argument
$argv[2] = isset($argv[2]) ? (bool)$argv[2] : false;

$nextVersionIncrease = new NextVersionIncrease(...$argv);
$nextVersionIncrease->run();