public static function help($params = array()) { $cli = new BedrockYAML(self::$script_dir . "/code/lib/_cli.yml"); $allowed_actions = $cli->getAllowedActions(); say(cell("Command", 20, true, "grey", "on_white") . cell("Description", 50, true, "grey", "on_white") . cell("Options", 50, true, "grey", "on_white")); foreach ($allowed_actions as $a) { $options = array(); foreach ($a->getOptions() as $o) { $options[] = "[" . $o->get('arg') . "] "; foreach ($o->get('description') as $line) { $options[] = $line; } $options[] = ""; } array_pop($options); $descriptions = $a->getDescription()->toArray(); $source = sizeof($options) > sizeof($descriptions) ? $options : $descriptions; for ($i = 0; $i < sizeof($source); $i++) { $cmd = $i == 0 ? $a->getKey() : ""; state(cell($cmd, 20, false)); $desc = isset($descriptions[$i]) ? $descriptions[$i] : ""; $opt = isset($options[$i]) ? $options[$i] : ""; state(cell($desc, 50, false)); state(cell($opt, 50, false)); state("\n"); } say(cell("", 20) . cell("", 50) . cell("", 50)); } }
$script_dir = dirname(dirname(__FILE__)); require_once "{$script_dir}/code/lib/bedrock/Bedrock.php"; require_once "{$script_dir}/code/SilverSmithNode.php"; require_once "{$script_dir}/code/BedrockDataRecord.php"; foreach (glob("{$script_dir}/code/*.php") as $class) { require_once $class; } require_once "{$script_dir}/code/lib/thirdparty/TextDiff.php"; // Bootstrap the SilverSmith class SilverSmith::set_cli(true); SilverSmith::set_script_dir($script_dir); SilverSmith::set_git_path(trim(shell_exec("which git"))); SilverSmithDefaults::load(SilverSmith::get_script_dir() . "/code/lib/_defaults.yml"); SilverSmithSpec::load(SilverSmith::get_script_dir() . "/code/lib/_spec.yml"); // Validation for the CLI commands $commands = new BedrockYAML(SilverSmith::get_script_dir() . "/code/lib/_cli.yml"); $allowed_actions = $commands->getAllowedActions(); $PARAMS = SilverSmithUtil::parse_parameters(); if (!isset($PARAMS[1])) { fail("Usage: silversmith <command> [-args]. Type 'silversmith help' for more information."); } $action = $PARAMS[1]; if (!$allowed_actions->get($action)) { say(error("'{$action}' is not an allowed command.")); say("Available commands:\n " . implode("\n", array_keys($allowed_actions->toArray()))); die; } $allowed_options = $allowed_actions->get($action)->getOptions(); foreach ($PARAMS as $k => $v) { if (!is_numeric($k) && !$allowed_options->get($k)) { say(error("Option '{$k}' is not allowed."));