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

/*
 * This file is part of the JSON Lint package.
 *
 * (c) Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

function includeIfExists($file)
{
    if (file_exists($file)) {
        return include $file;
    }
}

if ((!$loader = includeIfExists(__DIR__.'/../vendor/autoload.php')) && (!$loader = includeIfExists(__DIR__.'/../../../autoload.php'))) {
    die('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);
}

use Seld\JsonLint\JsonParser;

if (!isset($_SERVER['argv'][1])) {
    if ($contents = file_get_contents('php://stdin')) {
        lint($contents);
    }

    echo 'Usage: jsonlint file'.PHP_EOL;
    exit;
}

$file = $_SERVER['argv'][1];
if (!preg_match('{^https?://}i', $file)) {
    if (!file_exists($file)) {
        echo 'File not found: '.$file.PHP_EOL;
        exit(1);
    }
    if (!is_readable($file)) {
        echo 'File not readable: '.$file.PHP_EOL;
        exit(1);
    }
}

lint(file_get_contents($file));

function lint($content)
{
    $parser = new JsonParser();
    if ($err = $parser->lint($content)) {
        echo $err->getMessage().PHP_EOL;
        exit(1);
    }
    echo 'Valid JSON'.PHP_EOL;
    exit(0);
}