#!/usr/bin/env php
<?php
use MatthiasMullie\Minify;

// command line utility to minify CSS
if (file_exists(__DIR__ . '/../../../autoload.php')) {
    // if composer install
    require_once __DIR__ . '/../../../autoload.php';
} else {
    require_once __DIR__ . '/../src/Minify.php';
    require_once __DIR__ . '/../src/CSS.php';
    require_once __DIR__ . '/../src/Exception.php';
}

error_reporting(E_ALL);
// check PHP setup for cli arguments
if (!isset($_SERVER['argv']) && !isset($argv)) {
    fwrite(STDERR, 'Please enable the "register_argc_argv" directive in your php.ini' . PHP_EOL);
    exit(1);
} elseif (!isset($argv)) {
    $argv = $_SERVER['argv'];
}
// check if path to file given
if (!isset($argv[1])) {
    fwrite(STDERR, 'Argument expected: path to file' . PHP_EOL);
    exit(1);
}
// check if script run in cli environment
if ('cli' !== php_sapi_name()) {
    fwrite(STDERR, $argv[1] . ' must be run in the command line' . PHP_EOL);
    exit(1);
}
// check if source file exists
if (!file_exists($argv[1])) {
    fwrite(STDERR, 'Source file "' . $argv[1] . '" not found' . PHP_EOL);
    exit(1);
}

try {
    $minifier = new Minify\CSS($argv[1]);
    echo $minifier->minify();
} catch (Exception $e) {
    fwrite(STDERR, $e->getMessage(), PHP_EOL);
    exit(1);
}
