2011-11-24 02:15:37 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< ? php 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-05 17:12:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  This  file  is  part  of  the  Magallanes  package . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*  ( c )  Andrés  Montañez  < andres @ andresmontanez . com > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*  For  the  full  copyright  and  license  information ,  please  view  the  LICENSE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*  file  that  was  distributed  with  this  source  code . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-11-06 15:44:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								namespace  Mage\Command\BuiltIn ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								use  Mage\Command\AbstractCommand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								use  Mage\Console ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								use  Exception ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Command  for  Adding  elements  to  the  Configuration . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Currently  elements  allowed  to  add : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *    -  environments 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ author  Andrés  Montañez  < andres @ andresmontanez . com > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								class  AddCommand  extends  AbstractCommand 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-24 02:15:37 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2014-08-06 19:01:39 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  Adds  new  Configuration  Elements 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  @ see  \Mage\Command\AbstractCommand :: run () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  @ throws  Exception 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-09-21 05:23:07 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public  function  run () 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-24 02:15:37 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2012-09-21 05:23:07 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $subCommand  =  $this -> getConfig () -> getArgument ( 1 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            switch  ( $subCommand )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                case  'environment' : 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-06 15:44:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    $this -> addEnvironment (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                default ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    throw  new  Exception ( 'The Type of Add is needed.' ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-09-21 05:23:07 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-06 15:44:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }  catch  ( Exception  $exception )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            Console :: output ( '<red>'  .  $exception -> getMessage ()  .  '</red>' ,  1 ,  2 ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-09-21 05:23:07 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-11-06 15:44:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  Adds  an  Environment 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  @ throws  Exception 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    protected  function  addEnvironment () 
							 
						 
					
						
							
								
									
										
										
										
											2012-09-21 05:23:07 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $withReleases  =  $this -> getConfig () -> getParameter ( 'enableReleases' ,  false ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $environmentName  =  strtolower ( $this -> getConfig () -> getParameter ( 'name' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $environmentName  ==  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            throw  new  Exception ( 'You must specify a name for the environment.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-07-16 15:52:23 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $environmentConfigFile  =  getcwd ()  .  '/.mage/config/environment/'  .  $environmentName  .  '.yml' ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-09-21 05:23:07 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-11-24 02:15:37 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        if  ( file_exists ( $environmentConfigFile ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-09-21 05:23:07 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            throw  new  Exception ( 'The environment already exists.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-11-06 15:44:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        Console :: output ( 'Adding new environment: <dark_gray>'  .  $environmentName  .  '</dark_gray>' ); 
							 
						 
					
						
							
								
									
										
										
										
											2012-09-21 05:23:07 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $releasesConfig  =  'releases:'  .  PHP_EOL 
							 
						 
					
						
							
								
									
										
										
										
											2014-08-06 19:01:39 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            .  '  enabled: true'  .  PHP_EOL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  '  max: 10'  .  PHP_EOL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  '  symlink: current'  .  PHP_EOL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  '  directory: releases'  .  PHP_EOL ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-09-21 05:23:07 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $baseConfig  =  '#'  .  $environmentName  .  PHP_EOL 
							 
						 
					
						
							
								
									
										
										
										
											2014-08-06 19:01:39 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            .  'deployment:'  .  PHP_EOL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  '  user: dummy'  .  PHP_EOL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  '  from: ./'  .  PHP_EOL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  '  to: /var/www/vhosts/example.com/www'  .  PHP_EOL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  '  excludes:'  .  PHP_EOL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  ( $withReleases  ?  $releasesConfig  :  '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  'hosts:'  .  PHP_EOL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  'tasks:'  .  PHP_EOL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  '  pre-deploy:'  .  PHP_EOL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  '  on-deploy:'  .  PHP_EOL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  ( $withReleases  ?  ( '  post-release:'  .  PHP_EOL )  :  '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            .  '  post-deploy:'  .  PHP_EOL ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-18 03:41:08 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-09-21 05:23:07 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $result  =  file_put_contents ( $environmentConfigFile ,  $baseConfig ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $result )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-06 15:44:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            Console :: output ( '<light_green>Success!!</light_green> Environment config file for <dark_gray>'  .  $environmentName  .  '</dark_gray> created successfully at <blue>'  .  $environmentConfigFile  .  '</blue>' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            Console :: output ( '<dark_gray>So please! Review and adjust its configuration.</dark_gray>' ,  2 ,  2 ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-24 02:15:37 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-06 15:44:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            Console :: output ( '<light_red>Error!!</light_red> Unable to create config file for environment called <dark_gray>'  .  $environmentName  .  '</dark_gray>' ,  1 ,  2 ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-24 02:15:37 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2014-07-16 15:52:23 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}