Skip to content

Commit

Permalink
[chain] Add support to parse twig. (#279)
Browse files Browse the repository at this point in the history
  • Loading branch information
jmolivas committed Jan 18, 2018
1 parent 968b76e commit 07a5aa8
Show file tree
Hide file tree
Showing 7 changed files with 318 additions and 395 deletions.
126 changes: 5 additions & 121 deletions dist/chain/update-command-data.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,132 +4,16 @@ command:
name: update:command:data
description: 'Update gitbook'
commands:
{% set languages = ['en', 'es', 'hi', 'hu', 'pt_br', 'ro', 'vn', 'zh_hans'] %}
{% for language in languages %}
- command: settings:set
arguments:
name: language
value: ca
value: {{ language }}
- command: generate:doc:data
options:
file: '{{directory}}/ca.json'
- command: settings:set
arguments:
name: language
value: en
- command: generate:doc:data
options:
file: '{{directory}}/en.json'
- command: settings:set
arguments:
name: language
value: es
- command: generate:doc:data
options:
file: '{{directory}}/es.json'
- command: settings:set
arguments:
name: language
value: fr
- command: generate:doc:data
options:
file: '{{directory}}/fr.json'
- command: settings:set
arguments:
name: language
value: gu
- command: generate:doc:data
options:
file: '{{directory}}/gu.json'
- command: settings:set
arguments:
name: language
value: hi
- command: generate:doc:data
options:
file: '{{directory}}/hi.json'
- command: settings:set
arguments:
name: language
value: hu
- command: generate:doc:data
options:
file: '{{directory}}/hu.json'
- command: settings:set
arguments:
name: language
value: id
- command: generate:doc:data
options:
file: '{{directory}}/id.json'
- command: settings:set
arguments:
name: language
value: ja
- command: generate:doc:data
options:
file: '{{directory}}/ja.json'
- command: settings:set
arguments:
name: language
value: ko
- command: generate:doc:data
options:
file: '{{directory}}/ko.json'
- command: settings:set
arguments:
name: language
value: mr
- command: generate:doc:data
options:
file: '{{directory}}/mr.json'
- command: settings:set
arguments:
name: language
value: pa
- command: generate:doc:data
options:
file: '{{directory}}/pa.json'
- command: settings:set
arguments:
name: language
value: pt_br
- command: generate:doc:data
options:
file: '{{directory}}/pt_br.json'
- command: settings:set
arguments:
name: language
value: ro
- command: generate:doc:data
options:
file: '{{directory}}/ro.json'
- command: settings:set
arguments:
name: language
value: ru
- command: generate:doc:data
options:
file: '{{directory}}/ru.json'
- command: settings:set
arguments:
name: language
value: tl
- command: generate:doc:data
options:
file: '{{directory}}/tl.json'
- command: settings:set
arguments:
name: language
value: vn
- command: generate:doc:data
options:
file: '{{directory}}/vn.json'
- command: settings:set
arguments:
name: language
value: zh_hans
- command: generate:doc:data
options:
file: '{{directory}}/zh_hans.json'
file: '{{ directory }}/{{ language }}.json'
{% endfor %}
- command: settings:set
arguments:
name: language
Expand Down
64 changes: 8 additions & 56 deletions dist/chain/update-gitbook.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@ command:
name: update:gitbook
description: 'Update gitbook'
commands:
# - command: exec
# arguments:
# bin: composer require drupal/features
- command: 'module:install'
arguments:
module:
Expand All @@ -15,65 +12,20 @@ commands:
- locale
- migrate
- simpletest
- features
- breakpoint
- node
- views
- features
{% set languages = ['en', 'es', 'hi', 'hu', 'pt_br', 'ro', 'vn', 'zh_hans'] %}
{% for language in languages %}
- command: settings:set
arguments:
name: language
value: en
- command: generate:doc:gitbook
options:
path: '{{directory}}/en'
- command: settings:set
arguments:
name: language
value: es
- command: generate:doc:gitbook
options:
path: '{{directory}}/es'
- command: settings:set
arguments:
name: language
value: hi
- command: generate:doc:gitbook
options:
path: '{{directory}}/hi'
- command: settings:set
arguments:
name: language
value: hu
- command: generate:doc:gitbook
options:
path: '{{directory}}/hu'
- command: settings:set
arguments:
name: language
value: pt_br
- command: generate:doc:gitbook
options:
path: '{{directory}}/pt_br'
- command: settings:set
arguments:
name: language
value: ro
- command: generate:doc:gitbook
options:
path: '{{directory}}/ro'
- command: settings:set
arguments:
name: language
value: vn
- command: generate:doc:gitbook
options:
path: '{{directory}}/vn'
- command: settings:set
arguments:
name: language
value: zh_hans
- command: generate:doc:gitbook
value: {{ language }}
- command: develop:doc:gitbook
options:
path: '{{directory}}/zh_hans'
path: '{{ directory }}/{{ language }}'
{% endfor %}
- command: settings:set
arguments:
name: language
Expand Down
5 changes: 2 additions & 3 deletions src/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -578,12 +578,11 @@ public function registerChainCommands()
try {
$file = $chainCommand['file'];
$description = $chainCommand['description'];
$placeHolders = $chainCommand['placeholders'];
$command = new ChainCustomCommand(
$name,
$description,
$placeHolders,
$file
$file,
$chainDiscovery
);
$this->add($command);
} catch (\Exception $e) {
Expand Down
120 changes: 120 additions & 0 deletions src/Command/Chain/BaseCommand.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
<?php
/**
* Created by PhpStorm.
* User: jmolivas
* Date: 1/16/18
* Time: 2:22 PM
*/

namespace Drupal\Console\Core\Command\Chain;

use Drupal\Console\Core\Command\Command;
use Drupal\Console\Core\Utils\ChainDiscovery;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;

class BaseCommand extends Command
{
/**
* @var ChainDiscovery
*/
protected $chainDiscovery;

/**
* BaseCommand constructor.
*
* @param ChainDiscovery $chainDiscovery
*/
public function __construct(
ChainDiscovery $chainDiscovery
) {
$this->chainDiscovery = $chainDiscovery;
parent::__construct();
}

protected function initialize(
InputInterface $input,
OutputInterface $output
) {
parent::initialize($input, $output);

$options = [];
foreach ($_SERVER['argv'] as $index => $element) {
if ($index<2) {
continue;
}

if (substr($element, 0, 2) !== "--") {
continue;
}

$element = substr($element, 2);
$exploded = explode("=", $element);

if (!$exploded) {
$exploded = explode(" ", $element);
}

if (count($exploded)>1) {
$options[trim($exploded[0])] = trim($exploded[1]);
}
}

$file = $input->getOption('file');
$file = calculateRealPath($file);
$content = $this->chainDiscovery->getFileContents($file);
$variables = $this->chainDiscovery->extractInlinePlaceHolderNames($content);

foreach ($variables as $variable) {
if (!array_key_exists($variable, $options)) {
$options[$variable] = null;
}
}

foreach ($options as $optionName => $optionValue) {
if ($input->hasOption($optionName)) {
continue;
}

$this->addOption(
$optionName,
null,
InputOption::VALUE_OPTIONAL,
$optionName,
$optionValue
);
}
}

protected function getFileOption()
{
$input = $this->getIo()->getInput();
$file = $input->getOption('file');

if (!$file) {
$files = $this->chainDiscovery->getChainFiles(true);

$file = $this->getIo()->choice(
$this->trans('commands.chain.questions.chain-file'),
array_values($files)
);
}

$file = calculateRealPath($file);
$input->setOption('file', $file);

return $file;
}

protected function getOptionsAsArray()
{
$input = $this->getIo()->getInput();
$options = [];
foreach ($input->getOptions() as $option => $value) {
$options[$option] = $value;
}

return $options;
}
}
Loading

0 comments on commit 07a5aa8

Please sign in to comment.