<?php
/**
 * This code uses several external classes:
 *
 * - PSR0-compliant
 *   - OSInet Class_Grapher package.
 * - PEAR
 *   - Image_GraphViz
 * - Miscellaneous
 *   - grammar_parser package 7.x -
 *     - http://drupal.org/project/grammar_parser
 *     - does not depend on Drupal, but can be used within Drupal/Drush either
 *       as a module or a Libraries-compatible PHP library.
 *
 * It also depends on
 * - GraphViz - http://www.graphviz.org/
 * - PHP 5.3
 */
// To use, adjust the grammar parser path to your deployment.
$gpPath = '../../d7/sites/all/libraries/grammar_parser/engine';

use \OSInet\Class_Grapher\Logger;
use \OSInet\Class_Grapher\Graph;

// Image_GraphViz throws notices, so keep it quiet.
error_reporting(E_WARNING);

// Include the OSInet PSR0 autoloader.
require __DIR__ .'/../../misc/psr0.php';

// Load Image_GraphViz: PEAR, not PSR0.
require 'Image/GraphViz.php';

// Load grammar_parser. Not autoloadable.
$gpFiles = array('parser', 'editor', 'list', 'object', 'reader', 'writer');
foreach ($gpFiles as $file) {
  require "$gpPath/$file.inc";
}

// Initialize PSR0 autoloader for remaining classes.
spl_autoload_register('psr0_autoload', TRUE);

// Suggestion: look at Drupal 8 core/lib/Drupal/Core/Database directory
$base = $argv;
// Ignore script itself.
array_shift($base);

$logger = new Logger(LOG_DEBUG);
$imager = 'dot';
$format = 'svg';

$graph = new Graph($base, $logger);
echo $graph->build($imager, $format);