public function __construct($injectables)
{
// call our parent
parent::__construct($injectables);
// define the command
$this->setName('play-story');
$this->setShortDescription('play a story, or a list of stories');
$this->setLongDescription("Use this command to play a single story, or a list of stories defined in a JSON file." . PHP_EOL);
$this->setArgsList(array("[<story.php|list.json>]" => "run a story, or a list of stories"));
// the switches that this command supports
$this->setSwitches(array(new PlayStory_LogJsonSwitch(), new PlayStory_LogJUnitSwitch(), new PlayStory_LogTapSwitch()));
// add in the features that this command relies on
$this->addFeature(new Feature_VerboseSupport());
$this->addFeature(new Feature_ConsoleSupport());
$this->addFeature(new Feature_ColorSupport());
$this->addFeature(new Feature_DeviceSupport());
$this->addFeature(new Feature_TestEnvironmentConfigSupport());
$this->addFeature(new Feature_SystemUnderTestConfigSupport());
$this->addFeature(new Feature_LocalhostSupport());
$this->addFeature(new Feature_ActiveConfigSupport());
$this->addFeature(new Feature_DefinesSupport());
$this->addFeature(new Feature_PhaseLoaderSupport());
$this->addFeature(new Feature_ProseLoaderSupport());
$this->addFeature(new Feature_PersistReuseTargetSupport());
$this->addFeature(new Feature_PersistDeviceSupport());
$this->addFeature(new Feature_PersistProcessesSupport());
$this->addFeature(new Feature_TestUsersSupport());
// now setup all of the switches that we support
$this->addFeatureSwitches();
}