Example #1
0
 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));
     }
 }
Example #2
0
$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."));