#!/usr/bin/env php
<?php
include dirname(__DIR__) . '/functions.inc.php';

array_shift($argv);
$formatters = [
  'expanded' => 'classic',
  'compressed' => 'compressed',
  'lessjs' => 'lessjs',
];
$defaultFormatter = 'compressed';

$options = [
  '--formatter' => $defaultFormatter,
  '--suffix' => '',
  '--verbose' => false,
];
foreach ($argv as $pn) {
  $parts = explode('=', $pn);
  $pn = trim($parts[0]);
  if (in_array($pn, array_keys($options))) {
    $options[$pn] = (isset($parts[1]) ? trim($parts[1]) : true);
  }
}

list($src, $tgt) = $argv;
$autoloadCandidates = [
  __DIR__.'/../../../autoload.php',
  __DIR__.'/../vendor/autoload.php',
];

$ready = false;
foreach ($autoloadCandidates as $autoload) {
  if (is_readable($autoload)) {
    include $autoload;
    $ready = true;
    verbose("Using autoload: {$autoload}\n");
    break;
  }
}
if (!$ready) {
  terminate('Unable to find autoload.php');
}

$less = new lessc();
$less->setImportDir([$src]);
$less->setFormatter($formatters[$options['--formatter']]);

$files = scandir($src);
foreach ($files as $inputFile) {
  if (substr($inputFile, 0, 2) === '__') {
    continue;
  }
  $fullSourceFile = "{$src}/{$inputFile}";
  if (in_array($inputFile, ['.', '..']) || is_dir($fullSourceFile)) continue;
  $ext = pathinfo($inputFile, PATHINFO_EXTENSION);
  if ($ext !== 'less') {
    continue;
  }
  if (is_readable($fullSourceFile)) {
    $outputBaseName = str_replace('.less', "{$options['--suffix']}.css", $inputFile);
    $outputFilename = "{$tgt}/{$outputBaseName}";

    if (!is_dir($tgt)) {
      verbose("\tCreate dir: {$tgt}\n");
      mkdir($tgt, 0755, true);
    }

    verbose("\tCompiling: {$inputFile} as {$outputBaseName}...\n");
    $output = $less->compile('@import "'. $inputFile .'";');
    file_put_contents($outputFilename, $output);
  }
}
