#!/usr/bin/env php
<?php
require __DIR__ . '/vendor/autoload.php';

use EnumGenerator\Factory;

if (empty($argv[1])) {
    fputs(STDERR, "Pass the argument.\n");
    exit(1);
}

$options = getopt('i:o:f', ['in:', 'out:', 'force']);

if ($options === false) {
    fputs(STDERR, "Invalid argument.\n");
    exit(1);
}

if (!isset($options['i']) && !isset($options['in'])) {
    fputs(STDERR, "-i, --in options is required.\n");
    exit(1);
}

$inFile = isset($options['i']) ? $options['i'] : $options['in'];

$outDir = '';
if (isset($options['o']) || isset($options['out'])) {
    $outDir = isset($options['o']) ? $options['o'] : $options['out'];
}

$isForce = false;
if (isset($options['f']) || isset($options['force'])) {
    $isForce = true;
}

try {
    $filename = realpath($inFile);
    if (!file_exists($filename)) {
        fputs(STDERR, "File not found.\n");
        exit(1);
    }

    $enum = Factory::create($filename);

    if (empty($outDir)) {
        $enum->generate();
    } else {
        $enum->generateFile($outDir, $isForce);
        echo "The class files was output in [{$outDir}].\n";
    }
} catch (Exception $e) {
    fputs(STDERR, $e->getMessage() . PHP_EOL);
}
