function parse_arguments(&$argv) { // Default options $defaults = array('i' => 'localhost', 'p' => '8000', "mime-file" => "/etc/mime.types", "wp-root" => ".", "wp-version" => "latest", "show-errors" => 'E_ALL', "show-assets" => false, "show-hooks" => '', "show-everything" => false, "wordpresses" => $_SERVER['HOME'] . "/.cache/whippet/wordpresses", "cb-cache" => $_SERVER['HOME'] . "/.cache/whippet/callback-cache", "multisite" => false); // Are there some options in a config file? Check them in order. if (file_exists("/etc/whippetrc")) { $defaults = array_merge($defaults, parse_ini_file("/etc/whippetrc")); } if (!empty($_SERVER['HOME']) && file_exists($_SERVER['HOME'] . "/.whippetrc")) { $defaults = array_merge($defaults, parse_ini_file($_SERVER['HOME'] . "/.whippetrc")); } $optparser = new OptionParser(); $optparser->addRule('h|help'); $optparser->addRule('i::'); $optparser->addRule('p::'); $optparser->addRule('siteurl::'); $optparser->addRule('q'); $optparser->addRule('multisite'); $optparser->addRule('mime-file::'); $optparser->addRule('no-sql'); $optparser->addRule('no-templates'); $optparser->addRule('no-params'); $optparser->addRule('no-scripts'); $optparser->addRule('show-assets'); $optparser->addRule('show-wp-errors'); $optparser->addRule('show-wp-queries'); $optparser->addRule('show-wp-hooks'); $optparser->addRule('show-errors::'); $optparser->addRule('show-everything'); $optparser->addRule('wp-version::'); $optparser->addRule('show-hooks::'); $optparser->addRule('wordpresses::'); try { $argv = $optparser->parse(); } catch (Exception $e) { echo Colours::fg('red') . "Error: " . Colours::fg("white") . $e->getMessage() . "\n\n"; usage(); exit(0); } $arguments = $optparser->getAllOptions(); if (!isset($arguments->siteurl)) { $i = isset($arguments['i']) ? $arguments['i'] : $defaults['i']; $p = isset($arguments['p']) ? $arguments['p'] : $defaults['p']; if ($p == 80) { $defaults['siteurl'] = "http://{$i}/"; } else { $defaults['siteurl'] = "http://{$i}:{$p}/"; } } return array_merge($defaults, $arguments); }