├── .styleci.yml ├── Command ├── ClassCommand.php ├── CodeCommand.php ├── EditCommand.php ├── LocateCommand.php ├── PathCommand.php └── ViewCommand.php ├── DependencyInjection ├── Configuration.php └── LiipCodeExtension.php ├── Exception └── AmbiguousLookupException.php ├── LiipCodeBundle.php ├── Model └── Lookup.php ├── README.md ├── Resources └── meta │ └── LICENSE └── composer.json /.styleci.yml: -------------------------------------------------------------------------------- 1 | preset: symfony -------------------------------------------------------------------------------- /Command/ClassCommand.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * This source file is subject to the MIT license that is bundled 9 | * with this source code in the file LICENSE. 10 | */ 11 | 12 | namespace Liip\CodeBundle\Command; 13 | 14 | use Liip\CodeBundle\Model\Lookup; 15 | use Symfony\Component\Console\Input\InputInterface; 16 | use Symfony\Component\Console\Output\OutputInterface; 17 | 18 | class ClassCommand extends CodeCommand 19 | { 20 | /** 21 | * {@inheritdoc} 22 | */ 23 | protected function configure() 24 | { 25 | parent::configure(); 26 | 27 | $this 28 | ->setName('code:class') 29 | ->setDescription('Find the class of a named resource'); 30 | } 31 | 32 | /** 33 | * {@inheritdoc} 34 | */ 35 | protected function execute(InputInterface $input, OutputInterface $output) 36 | { 37 | $lookup = new Lookup($input->getArgument('lookup'), $input->getOption('type'), $this->getContainer()); 38 | 39 | $class = $lookup->getClass(); 40 | 41 | $output->writeln($class); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Command/CodeCommand.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * This source file is subject to the MIT license that is bundled 9 | * with this source code in the file LICENSE. 10 | */ 11 | 12 | namespace Liip\CodeBundle\Command; 13 | 14 | use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; 15 | use Symfony\Component\Console\Input\InputArgument; 16 | use Symfony\Component\Console\Input\InputOption; 17 | 18 | abstract class CodeCommand extends ContainerAwareCommand 19 | { 20 | /** 21 | * {@inheritdoc} 22 | */ 23 | protected function configure() 24 | { 25 | $this 26 | ->addArgument('lookup', InputArgument::REQUIRED, 'Id or name of the resource you are looking for.') 27 | ->addOption('type', null, InputOption::VALUE_REQUIRED, 'Type of the resource (class|service|template)'); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Command/EditCommand.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * This source file is subject to the MIT license that is bundled 9 | * with this source code in the file LICENSE. 10 | */ 11 | 12 | namespace Liip\CodeBundle\Command; 13 | 14 | use Liip\CodeBundle\Model\Lookup; 15 | use Symfony\Component\Console\Input\InputInterface; 16 | use Symfony\Component\Console\Output\OutputInterface; 17 | 18 | class EditCommand extends CodeCommand 19 | { 20 | /** 21 | * {@inheritdoc} 22 | */ 23 | protected function configure() 24 | { 25 | parent::configure(); 26 | 27 | $this 28 | ->setName('code:edit') 29 | ->setDescription('Edit the source file of a named resource'); 30 | } 31 | 32 | /** 33 | * {@inheritdoc} 34 | */ 35 | protected function execute(InputInterface $input, OutputInterface $output) 36 | { 37 | $lookup = new Lookup($input->getArgument('lookup'), $input->getOption('type'), $this->getContainer()); 38 | 39 | // perform resource lookup 40 | $resource_file = $lookup->getFilePath(); 41 | 42 | // edit file 43 | $edit_prefix = $this->getContainer()->getParameter('liip_code.edit_command'); 44 | $edit_command = escapeshellcmd(sprintf('%s %s', $edit_prefix, $resource_file)); 45 | passthru($edit_command, $return_code); 46 | 47 | return $return_code; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Command/LocateCommand.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * This source file is subject to the MIT license that is bundled 9 | * with this source code in the file LICENSE. 10 | */ 11 | 12 | namespace Liip\CodeBundle\Command; 13 | 14 | use Liip\CodeBundle\Model\Lookup; 15 | use Symfony\Component\Console\Input\InputInterface; 16 | use Symfony\Component\Console\Output\OutputInterface; 17 | 18 | class LocateCommand extends CodeCommand 19 | { 20 | /** 21 | * {@inheritdoc} 22 | */ 23 | protected function configure() 24 | { 25 | parent::configure(); 26 | 27 | $this 28 | ->setName('code:locate') 29 | ->setDescription('Find the filepath of a named resource'); 30 | } 31 | 32 | /** 33 | * {@inheritdoc} 34 | */ 35 | protected function execute(InputInterface $input, OutputInterface $output) 36 | { 37 | $lookup = new Lookup($input->getArgument('lookup'), $input->getOption('type'), $this->getContainer()); 38 | 39 | $file_path = $lookup->getFilePath(); 40 | 41 | $output->writeln($file_path); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Command/PathCommand.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * This source file is subject to the MIT license that is bundled 9 | * with this source code in the file LICENSE. 10 | */ 11 | 12 | namespace Liip\CodeBundle\Command; 13 | 14 | use Liip\CodeBundle\Model\Lookup; 15 | use Symfony\Component\Console\Input\InputInterface; 16 | use Symfony\Component\Console\Output\OutputInterface; 17 | 18 | class PathCommand extends CodeCommand 19 | { 20 | /** 21 | * {@inheritdoc} 22 | */ 23 | protected function configure() 24 | { 25 | parent::configure(); 26 | 27 | $this 28 | ->setName('code:path') 29 | ->setDescription('Get the symfony path for a named resource'); 30 | } 31 | 32 | /** 33 | * {@inheritdoc} 34 | */ 35 | protected function execute(InputInterface $input, OutputInterface $output) 36 | { 37 | $lookup = new Lookup($input->getArgument('lookup'), $input->getOption('type'), $this->getContainer()); 38 | 39 | // perform resource lookup 40 | $resource_path = $lookup->getPath(); 41 | 42 | $output->writeln($resource_path); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Command/ViewCommand.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * This source file is subject to the MIT license that is bundled 9 | * with this source code in the file LICENSE. 10 | */ 11 | 12 | namespace Liip\CodeBundle\Command; 13 | 14 | use Liip\CodeBundle\Model\Lookup; 15 | use Symfony\Component\Console\Input\InputInterface; 16 | use Symfony\Component\Console\Output\OutputInterface; 17 | 18 | class ViewCommand extends CodeCommand 19 | { 20 | /** 21 | * {@inheritdoc} 22 | */ 23 | protected function configure() 24 | { 25 | parent::configure(); 26 | 27 | $this 28 | ->setName('code:view') 29 | ->setDescription('Displays the source file of a named resource'); 30 | } 31 | 32 | /** 33 | * {@inheritdoc} 34 | */ 35 | protected function execute(InputInterface $input, OutputInterface $output) 36 | { 37 | $lookup = new Lookup($input->getArgument('lookup'), $input->getOption('type'), $this->getContainer()); 38 | 39 | // perform resource lookup 40 | $resource_file = $lookup->getFilePath(); 41 | 42 | // edit file 43 | $edit_prefix = $this->getContainer()->getParameter('liip_code.view_command'); 44 | $edit_command = escapeshellcmd(sprintf('%s %s', $edit_prefix, $resource_file)); 45 | passthru($edit_command, $return_code); 46 | 47 | return $return_code; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /DependencyInjection/Configuration.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * This source file is subject to the MIT license that is bundled 9 | * with this source code in the file LICENSE. 10 | */ 11 | 12 | namespace Liip\CodeBundle\DependencyInjection; 13 | 14 | use Symfony\Component\Config\Definition\Builder\TreeBuilder; 15 | use Symfony\Component\Config\Definition\ConfigurationInterface; 16 | 17 | /** 18 | * This class contains the configuration information for the bundle. 19 | * 20 | * This information is solely responsible for how the different configuration 21 | * sections are normalized, and merged. 22 | * 23 | * @author Lukas Kahwe Smith 24 | */ 25 | class Configuration implements ConfigurationInterface 26 | { 27 | /** 28 | * Generates the configuration tree. 29 | * 30 | * @return TreeBuilder 31 | */ 32 | public function getConfigTreeBuilder() 33 | { 34 | $treeBuilder = new TreeBuilder(); 35 | $rootNode = $treeBuilder->root('liip_code', 'array'); 36 | 37 | $rootNode 38 | ->children() 39 | ->scalarNode('edit_command')->defaultValue('vim -f')->end() 40 | ->scalarNode('view_command')->defaultValue('vim -f')->end() 41 | ->end() 42 | ->end(); 43 | 44 | return $treeBuilder; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /DependencyInjection/LiipCodeExtension.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * This source file is subject to the MIT license that is bundled 9 | * with this source code in the file LICENSE. 10 | */ 11 | 12 | namespace Liip\CodeBundle\DependencyInjection; 13 | 14 | use Symfony\Component\HttpKernel\DependencyInjection\Extension; 15 | use Symfony\Component\DependencyInjection\ContainerBuilder; 16 | 17 | class LiipCodeExtension extends Extension 18 | { 19 | /** 20 | * Loads the services based on your application configuration. 21 | * 22 | * @param array $configs 23 | * @param ContainerBuilder $container 24 | */ 25 | public function load(array $configs, ContainerBuilder $container) 26 | { 27 | $configuration = new Configuration(); 28 | $config = $this->processConfiguration($configuration, $configs); 29 | 30 | $container->setParameter($this->getAlias().'.edit_command', $config['edit_command']); 31 | $container->setParameter($this->getAlias().'.view_command', $config['view_command']); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Exception/AmbiguousLookupException.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * This source file is subject to the MIT license that is bundled 9 | * with this source code in the file LICENSE. 10 | */ 11 | 12 | namespace Liip\CodeBundle\Exception; 13 | 14 | /** 15 | * AmbiguousLookupException is thrown when a lookup type cannot be identified. 16 | */ 17 | class AmbiguousLookupException extends \RuntimeException 18 | { 19 | } 20 | -------------------------------------------------------------------------------- /LiipCodeBundle.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * This source file is subject to the MIT license that is bundled 9 | * with this source code in the file LICENSE. 10 | */ 11 | 12 | namespace Liip\CodeBundle; 13 | 14 | use Symfony\Component\HttpKernel\Bundle\Bundle; 15 | 16 | class LiipCodeBundle extends Bundle 17 | { 18 | } 19 | -------------------------------------------------------------------------------- /Model/Lookup.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * This source file is subject to the MIT license that is bundled 9 | * with this source code in the file LICENSE. 10 | */ 11 | 12 | namespace Liip\CodeBundle\Model; 13 | 14 | use Liip\CodeBundle\Exception\AmbiguousLookupException; 15 | use Symfony\Component\DependencyInjection\ContainerInterface; 16 | 17 | /* 18 | * A resource lookup 19 | */ 20 | class Lookup 21 | { 22 | const LT_PATH = 'path'; 23 | const LT_NAME = 'name'; 24 | const RT_TEMPLATE = 'template'; 25 | const RT_CLASS = 'class'; 26 | const RT_SERVICE = 'service'; 27 | 28 | protected $lookup; 29 | protected $lookupType; 30 | protected $resourceType; 31 | protected $resourceTypes = array( 32 | self::RT_TEMPLATE, 33 | self::RT_CLASS, 34 | self::RT_SERVICE, 35 | ); 36 | protected $container; 37 | 38 | /** 39 | * Constructor. 40 | * 41 | * @param string $lookup Some lookup string: either a name, id, ... 42 | * @param string $resourceType Type of the resource looked up 43 | * @param string $container 44 | */ 45 | public function __construct($lookup, $resourceType, ContainerInterface $container) 46 | { 47 | $this->lookup = $lookup; 48 | $this->container = $container; 49 | 50 | $this->typify($resourceType); 51 | } 52 | 53 | /* 54 | * @return allowed type option values 55 | */ 56 | 57 | public function getTypeOptionSyntax() 58 | { 59 | return sprintf('(%s)', implode($this->resourceTypes, '|')); 60 | } 61 | 62 | /* 63 | * Identifies the types of the lookup and corresponding resource 64 | * @param string $resourceType optional resource type indication 65 | */ 66 | 67 | public function typify($resourceType = null) 68 | { 69 | // identify symfony paths of the form @MyBundle/../.. 70 | if ($this->lookup[0] === '@') { 71 | $this->lookupType = self::LT_PATH; 72 | 73 | return; 74 | } 75 | 76 | if ($resourceType) { 77 | if (!in_array($resourceType, $this->resourceTypes)) { 78 | throw new AmbiguousLookupException(sprintf("'%s' is not a valid resource type indication.\nUse '--type=%s' option to indicate the looked up resource type.", $this->getTypeOptionSyntax(), $this->lookup)); 79 | } 80 | 81 | $this->lookupType = self::LT_NAME; 82 | $this->resourceType = $resourceType; 83 | 84 | return; 85 | } 86 | 87 | // identify class names of the form \Path\To\My\Class 88 | if (strpos($this->lookup, '\\')) { 89 | $this->lookupType = self::LT_NAME; 90 | $this->resourceType = self::RT_CLASS; 91 | 92 | return; 93 | } 94 | 95 | // identify template names of the form MyBundle:folder:template 96 | if (strpos($this->lookup, ':')) { 97 | $this->lookupType = self::LT_NAME; 98 | $this->resourceType = self::RT_TEMPLATE; 99 | 100 | return; 101 | } 102 | 103 | // identify service names of the form my.service.name.space 104 | if (strpos($this->lookup, '.')) { 105 | $this->lookupType = self::LT_NAME; 106 | $this->resourceType = self::RT_SERVICE; 107 | 108 | return; 109 | } 110 | 111 | throw new AmbiguousLookupException(sprintf("No type could be determined for '%s'.\nUse '--type=%s' option to indicate the looked up resource type.", $this->getTypeOptionSyntax(), $this->lookup)); 112 | } 113 | 114 | /* 115 | * return the class namespace/name 116 | */ 117 | 118 | public function getClass() 119 | { 120 | $class = null; 121 | 122 | if ($this->lookupType == self::LT_PATH) { 123 | // TODO handle this case 124 | } 125 | 126 | if ($this->lookupType == self::LT_NAME) { 127 | if ($this->resourceType == self::RT_CLASS) { 128 | $class = $this->lookup; 129 | } 130 | 131 | if ($this->resourceType == self::RT_SERVICE) { 132 | $class = $this->getServiceClass($this->lookup); 133 | } 134 | } 135 | 136 | if (!$class) { 137 | throw new \InvalidArgumentException(sprintf('Unable to find class of %s "%s"', $this->resourceType, $this->lookup)); 138 | } 139 | 140 | return $class; 141 | } 142 | 143 | /* 144 | * param $name the service id 145 | * @return class of a service 146 | */ 147 | 148 | protected function getServiceClass($name) 149 | { 150 | // access service 151 | return get_class($this->container->get($name)); 152 | } 153 | 154 | /* 155 | * param $name the template logical name 156 | * @return string path 157 | */ 158 | 159 | protected function getTemplatePath($name) 160 | { 161 | // access services 162 | $parser = $this->container->get('templating.name_parser'); 163 | 164 | // map template logicalName to symfony resource path 165 | return $parser->parse($name)->getPath(); 166 | } 167 | 168 | /* 169 | * param $name the class name 170 | * @return string path of class 171 | */ 172 | 173 | protected function getClassPath($name) 174 | { 175 | $ref = new \ReflectionClass($name); 176 | 177 | return $ref->getFileName(); 178 | } 179 | 180 | /* 181 | * param $name the service id 182 | * @return string path of a service 183 | */ 184 | 185 | protected function getServicePath($name) 186 | { 187 | return $this->getClassPath($this->getServiceClass($name)); 188 | } 189 | 190 | /* 191 | * @return string path of looked up resource 192 | */ 193 | 194 | public function getPath() 195 | { 196 | $path = null; 197 | 198 | if ($this->lookupType == self::LT_PATH) { 199 | $path = $this->lookup; 200 | } 201 | 202 | if ($this->lookupType == self::LT_NAME) { 203 | if ($this->resourceType == self::RT_TEMPLATE) { 204 | $path = $this->getTemplatePath($this->lookup); 205 | } 206 | 207 | if ($this->resourceType == self::RT_CLASS) { 208 | $path = $this->getClassPath($this->lookup); 209 | } 210 | 211 | if ($this->resourceType == self::RT_SERVICE) { 212 | $path = $this->getServicePath($this->lookup); 213 | } 214 | } 215 | 216 | if (!$path) { 217 | throw new \InvalidArgumentException(sprintf('Unable to find file of %s "%s"', $this->resourceType, $this->lookup)); 218 | } 219 | 220 | return $path; 221 | } 222 | 223 | /* 224 | * @return string its file system absolute path 225 | */ 226 | 227 | public function getFilePath() 228 | { 229 | // get path 230 | $path = $this->getPath(); 231 | 232 | // access services 233 | $locator = $this->container->get('file_locator'); 234 | 235 | // map path to absolute filepath 236 | return $locator->locate($path); 237 | } 238 | } 239 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | UNMAINTAINED 2 | ============ 3 | 4 | This bundle is no longer maintained. Feel free to fork it if needed. 5 | 6 | # Introduction 7 | 8 | A set of Symfony2 console commands to help developers deal with the various ways of identifying classes, templates, 9 | bundles, services, etc. Provides console commands to find their file path or class, as well as editor shortcuts. 10 | 11 | * `code:path` outputs the symfony path corresponding to a class, service, template, etc. 12 | * `code:locate` finds the file corresponding to a class, service, template, etc. 13 | * `code:class` outputs the class of a service. 14 | * `code:edit` edits the file corresponding to a class, service, template, etc. 15 | * `code:view` displays the file corresponding to a class, service, template, etc. 16 | 17 | ## Installation ## 18 | 19 | Add the following code to your ```composer.json``` file: 20 | 21 | "require": { 22 | .. 23 | "liip/code-bundle": "dev-master" 24 | }, 25 | 26 | And then run the Composer update command: 27 | 28 | $ php composer.phar update liip/code-bundle 29 | 30 | Then register the bundle in the `AppKernel.php` file: 31 | 32 | public function registerBundles() 33 | { 34 | $bundles = array( 35 | ... 36 | new Liip\CodeBundle\LiipCodeBundle(), 37 | ... 38 | ); 39 | 40 | return $bundles; 41 | } 42 | 43 | Configure the `code:edit` and `code:view` console command to work with your favorite editor: 44 | 45 | ```yml 46 | liip_code: 47 | edit_command: "vim -f" 48 | view_command: "vim -f" 49 | ``` 50 | 51 | In this example, the `app/console code:edit some_resource_name` command will indeed lookup the resource and execute `vim -f /path/to/the/corresponding/file`. 52 | 53 | Type `app/console` and check that new console commands are available of the form `code:*` 54 | 55 | This bundle currently defines no routes, nor does it require configuration. 56 | 57 | # Usage 58 | 59 | ## Common options 60 | 61 | The option `--type=(class|service|template)` can be used in case of ambiguous lookup: 62 | 63 | # templating engine service name is ambiguous, the following triggers an AmbiguousLookupException 64 | app/console code:locate templating 65 | 66 | # add type option to resolve ambiguity 67 | app/console code:locate templating --type=service 68 | 69 | ## code:path 70 | 71 | Returns the "symfony path" of something based on its "name". 72 | 73 | Symfony path for a template: 74 | 75 | app/console code:path AcmeDemoBundle:Demo:hello.html.twig 76 | => @AcmeDemoBundle/Resources/views/Demo/hello.html.twig 77 | 78 | Note that, in the case of a template, it does not need to exist: 79 | 80 | app/console code:path AcmeDemoBundle:Dummy:dummy.html.twig 81 | => @AcmeDemoBundle/Resources/views/Dummy/dummy.html.twig 82 | 83 | ... useful when you need to create a template and don't remember where to put it. 84 | 85 | For resources other than templates, `code:path` is synonymous to code:locate. 86 | 87 | ## code:locate 88 | 89 | Returns the "absolute filepath" of something. 90 | 91 | ### Locate by name: 92 | 93 | Locate a twig template by name: 94 | 95 | app/console code:locate AcmeDemoBundle:Demo:hello.html.twig 96 | => /path/to/symfony2-root/src/Acme/DemoBundle/Resources/views/Demo/hello.html.twig 97 | 98 | Locate a class by name: 99 | 100 | app/console code:locate "Acme\DemoBundle\ControllerListener" 101 | => /path/to/symfony2-root/src/Acme/DemoBundle/ControllerListener.php 102 | 103 | Note that the class name must be wrapped in quotes. 104 | Currently only classes managed by the Symfony2 autoloader will be picked. 105 | 106 | Locate a service by id: 107 | 108 | app/console code:locate acme.demo.listener 109 | => /path/to/symfony2-root/src/Acme/DemoBundle/ControllerListener.php 110 | 111 | You may also want to have a look at the `container:debug` console command, which allows you to inspect services in a deeper manner. 112 | 113 | ### Locate by "symfony path" 114 | 115 | Locate a bundle: 116 | 117 | app/console code:locate @AcmeDemoBundle 118 | => /path/to/symfony2-root/src/Acme/DemoBundle 119 | 120 | Locate a directory: 121 | 122 | app/console code:locate @AcmeDemoBundle/Resources/views 123 | => /path/to/symfony2-root/src/Acme/DemoBundle/Resources/views 124 | 125 | Locate a file: 126 | 127 | app/console code:locate @AcmeDemoBundle/Resources/views/Demo/hello.html.twig 128 | => /path/to/symfony2-root/src/Acme/DemoBundle/Resources/views/Demo/hello.html.twig 129 | 130 | ## code:class 131 | 132 | Obtain the class of a service: 133 | 134 | app/console code:class acme.demo.listener 135 | => Acme\DemoBundle\ControllerListener 136 | 137 | ## code:edit 138 | 139 | Locates and edits the file corresponding to a class, template, etc. 140 | Don't forget to configure CodeBundle to work with your favorite editor (see installation instructions). 141 | 142 | Edit a twig template: 143 | 144 | app/console code:edit AcmeDemoBundle:Demo:hello.html.twig 145 | => locates and opens the template source file in editor 146 | 147 | See code:locate instructions above for more infos. 148 | 149 | ## code:view 150 | 151 | Locates and displays the file corresponding to a class, template, etc. 152 | Works exactly the same as the `code:edit` console command, still handy if you want to make sure you don't mess around while browsing code. 153 | -------------------------------------------------------------------------------- /Resources/meta/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 Liip 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "liip/code-bundle", 3 | "type": "symfony-bundle", 4 | "description": "Liip Code Bundle", 5 | "keywords": ["debug", "development"], 6 | "license": "MIT", 7 | "authors": [ 8 | { 9 | "name": "Benoit Pointet", 10 | "email": "benoit.pointet@liip.ch" 11 | }, 12 | { 13 | "name": "Symfony Community", 14 | "homepage": "https://github.com/liip/LiipCodeBundle/contributors" 15 | } 16 | ], 17 | "minimum-stability": "dev", 18 | "require": { 19 | "php": "^5.3.9|^7.0", 20 | "symfony/framework-bundle": "~2.3" 21 | }, 22 | "autoload": { 23 | "psr-4": { "Liip\\CodeBundle\\": "" } 24 | }, 25 | "extra": { 26 | "branch-alias": { 27 | "dev-master": "0.5.x-dev" 28 | } 29 | } 30 | } 31 | --------------------------------------------------------------------------------