*/ class CreateCommand extends Command { /** * {@inheritdoc} */ protected function configure() { $types = implode(', ', $this->getTypes()); $this ->setName('create') ->setDescription('Create a gist using the API') ->addArgument('input', InputArgument::REQUIRED, 'Input') ->addArgument('type', InputArgument::OPTIONAL, 'Type', 'text') ->addOption('title', 't', InputOption::VALUE_REQUIRED, 'Title of the gist') ->addOption('show-url', 'u', InputOption::VALUE_NONE, 'Display only the gist url') ->addOption('show-id', 'i', InputOption::VALUE_NONE, 'Display only the gist Id') ->setHelp(<<input Identify the source of the content: path of the file (eg: /path/to/file) or standard input (-) type Defines the type of code: {$types} Default value: text Options: --title, -t Defines a title --show-id, -i Display only the Id of the gist --show-url, -u Display only the url of the gist EOF ); } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { //$output->writeln(sprintf('%s bar.', 'test')); $file = $input->getArgument('input'); $type = $input->getArgument('type'); $title = $input->getOption('title'); if ($file === '-') { $content = file_get_contents('php://stdin'); } else { if (!is_readable($file)) { $output->writeln(sprintf('%s: No such file.', $file)); return false; } if (!is_file($file)) { $output->writeln(sprintf('"%s" must be a file.', $file)); return false; } $content = file_get_contents($file); } if (!in_array($type, $this->getTypes())) { $output->writeln(sprintf('%s: invalid type.', $type)); return false; } if (trim($content) === '') { $output->writeln(sprintf('You can not create an empty gist.', $type)); } $gist = $this->getSilexApplication()['api_client']->create($title, $type, $content); if ($input->getOption('show-url')) { $output->writeln($gist['url']); return true; } if ($input->getOption('show-id')) { $output->writeln($gist['gist']['Id']); return true; } $output->writeln(json_encode($gist)); } /** * Returns the list of types. * * @return array */ protected function getTypes() { $types = array( 'html', 'css', 'javascript', 'php', 'sql', 'xml', 'yaml', 'perl', 'c', 'asp', 'python', 'bash', 'actionscript3', 'text', ); return $types; } }