Jump to content

dpeuscher

Member
  • Posts

    1
  • Joined

  • Last visited

dpeuscher's Achievements

Helping Hand

Helping Hand (3/5)

0

Reputation

  1. I worked with small PHP scripts to write my own workflows and noticed that I often would do the same jobs with every script again, so I decided to build a little toolkit around the Symfony 4.1 Command component. It provides a way to seamless have different states for Autocompletion and an easy way to configure variables that you can use in your script (saves it to .env file). As a proof-of-concept I wrote a movie-rating workflow in which you can rate your movie in different categories. The PHP-Code is as short as this command: class MovieRatingCommand extends AlfredInteractiveContainerAwareCommand { protected function configure() { $this ->setName('movie-rating') ->addArgument('category', InputArgument::OPTIONAL) ->addArgument('stars', InputArgument::OPTIONAL) ->addArgument('movie', InputArgument::OPTIONAL + InputArgument::IS_ARRAY); } protected function initialize(InputInterface $input, OutputInterface $output) { $stars = $this->getContainer()->getParameter('stars'); $categories = $this->getContainer()->getParameter('categories'); $filename = $this->getContainer()->getParameter('filename'); $sheetname = $this->getContainer()->getParameter('sheetname'); $tablename = $this->getContainer()->getParameter('tablename'); $this->addArgumentsAllowedValues('stars', $stars); $this->addArgumentsAllowedValues('category', $categories); $this->addInputHandler(['category', 'stars'], function () { $workflow = new WorkflowResult(); $workflow->setValid(false); $workflow->setTitle('Insert movie name to rate'); return [$workflow]; }); $showQuestions = function ($arguments) use ($categories, $filename, $sheetname, $tablename) { $movie = $arguments['movie']; $category = $arguments['category']; $stars = $arguments['stars']; if (!is_array($stars)) { $result = new WorkflowResult(); $result->setValid(true); $result->setTitle('Rate ' . $movie . ' - ' . $category . ': ' . $stars . ' stars'); $result->setSubtitle('Rate ' . $movie . ' in category "' . $category . '": ' . $stars . ' stars'); $result->setLargetype('Rate ' . $movie . ' in category "' . $category . '": ' . $stars . ' stars'); $result->setArg(json_encode([ 'movie' => $movie, 'currentdate' => (new \DateTime())->format('d.m.Y'), 'category' => $category, 'stars' => $stars, ])); $this->workflowHelper->variable('movie', $movie); $this->workflowHelper->variable('currentdate', (new \DateTime())->format('d.m.Y')); $this->workflowHelper->variable('category', iconv("ISO-8859-1", "UTF-8", utf8_decode($category))); $this->workflowHelper->variable('stars', $stars); $this->workflowHelper->variable('filename', $filename ?: null); $this->workflowHelper->variable('sheetname', $sheetname ?: null); $this->workflowHelper->variable('tablename', $tablename ?: null); return [$result]; } }; $this->addInputHandler(['category', 'stars', 'movie'], $showQuestions); } } You can find the Proof-of-concept here: https://github.com/dpeuscher/alfred-movie-rating. The Alfred-Symfony Toolkit can be found here: https://github.com/dpeuscher/alfred-symfony-tools. You can also use this composer command to use it: composer req dpeuscher/alfred-symfony-tools Thoughts, ideas, contributions are highly appreciated.
×
×
  • Create New...