Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
45de5c69
Commit
45de5c69
authored
Apr 08, 2010
by
Guilherme Blanco
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[2.0] Removed old CLI support.
parent
5381e3d5
Changes
27
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
0 additions
and
4199 deletions
+0
-4199
AbstractNamespace.php
lib/Doctrine/Common/CLI/AbstractNamespace.php
+0
-234
CLIController.php
lib/Doctrine/Common/CLI/CLIController.php
+0
-306
CLIException.php
lib/Doctrine/Common/CLI/CLIException.php
+0
-59
Configuration.php
lib/Doctrine/Common/CLI/Configuration.php
+0
-86
Option.php
lib/Doctrine/Common/CLI/Option.php
+0
-103
OptionGroup.php
lib/Doctrine/Common/CLI/OptionGroup.php
+0
-482
AbstractPrinter.php
lib/Doctrine/Common/CLI/Printers/AbstractPrinter.php
+0
-190
AnsiColorPrinter.php
lib/Doctrine/Common/CLI/Printers/AnsiColorPrinter.php
+0
-214
NormalPrinter.php
lib/Doctrine/Common/CLI/Printers/NormalPrinter.php
+0
-46
Style.php
lib/Doctrine/Common/CLI/Style.php
+0
-93
TaskDocumentation.php
lib/Doctrine/Common/CLI/TaskDocumentation.php
+0
-192
TaskNamespace.php
lib/Doctrine/Common/CLI/TaskNamespace.php
+0
-251
AbstractTask.php
lib/Doctrine/Common/CLI/Tasks/AbstractTask.php
+0
-200
HelpTask.php
lib/Doctrine/Common/CLI/Tasks/HelpTask.php
+0
-79
VersionTask.php
lib/Doctrine/Common/CLI/Tasks/VersionTask.php
+0
-61
RunSqlTask.php
lib/Doctrine/DBAL/Tools/CLI/Tasks/RunSqlTask.php
+0
-171
VersionTask.php
lib/Doctrine/DBAL/Tools/CLI/Tasks/VersionTask.php
+0
-62
ClearCacheTask.php
lib/Doctrine/ORM/Tools/CLI/Tasks/ClearCacheTask.php
+0
-205
ConvertDoctrine1SchemaTask.php
...ctrine/ORM/Tools/CLI/Tasks/ConvertDoctrine1SchemaTask.php
+0
-117
ConvertMappingTask.php
lib/Doctrine/ORM/Tools/CLI/Tasks/ConvertMappingTask.php
+0
-163
EnsureProductionSettingsTask.php
...rine/ORM/Tools/CLI/Tasks/EnsureProductionSettingsTask.php
+0
-78
GenerateEntitiesTask.php
lib/Doctrine/ORM/Tools/CLI/Tasks/GenerateEntitiesTask.php
+0
-120
GenerateProxiesTask.php
lib/Doctrine/ORM/Tools/CLI/Tasks/GenerateProxiesTask.php
+0
-108
GenerateRepositoriesTask.php
...Doctrine/ORM/Tools/CLI/Tasks/GenerateRepositoriesTask.php
+0
-146
RunDqlTask.php
lib/Doctrine/ORM/Tools/CLI/Tasks/RunDqlTask.php
+0
-147
SchemaToolTask.php
lib/Doctrine/ORM/Tools/CLI/Tasks/SchemaToolTask.php
+0
-224
VersionTask.php
lib/Doctrine/ORM/Tools/CLI/Tasks/VersionTask.php
+0
-62
No files found.
lib/Doctrine/Common/CLI/AbstractNamespace.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI
;
use
Doctrine\Common\Util\Inflector
;
/**
* Abstract CLI Namespace class
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
abstract
class
AbstractNamespace
{
/**
* @var Configuration CLI Configuration instance
*/
private
$_configuration
=
null
;
/**
* @var AbstractPrinter CLI Printer instance
*/
private
$_printer
=
null
;
/**
* @var AbstractNamespace CLI Namespace instance
*/
private
$_parentNamespace
=
null
;
/**
* @var array Available namespaces
*/
private
$_namespaces
=
array
();
/**
* Add a single namespace to CLI.
* Example of inclusion support to a single namespace:
*
* [php]
* $cliOrmNamespace->addNamespace('my-custom-namespace');
*
* @param string $name CLI Namespace name
*
* @return CliController This object instance
*/
public
function
addNamespace
(
$name
)
{
$name
=
self
::
formatName
(
$name
);
if
(
$this
->
hasNamespace
(
$name
))
{
throw
CLIException
::
cannotOverrideNamespace
(
$name
);
}
return
$this
->
overrideNamespace
(
$name
);
}
/**
* Overrides a namespace to CLI.
* Example of inclusion support to a single namespace:
*
* [php]
* $cli->overrideNamespace('orm');
*
* @param string $name CLI Namespace name
*
* @return AbstractNamespace Newly created CLI Namespace
*/
public
function
overrideNamespace
(
$name
)
{
$taskNamespace
=
new
TaskNamespace
(
$name
);
$taskNamespace
->
setParentNamespace
(
$this
);
$taskNamespace
->
setPrinter
(
$this
->
_printer
);
$taskNamespace
->
setConfiguration
(
$this
->
_configuration
);
$this
->
_namespaces
[
$taskNamespace
->
getName
()]
=
$taskNamespace
;
return
$taskNamespace
;
}
/**
* Retrieve CLI Namespace.
* Example of usage:
*
* [php]
* $cliOrmNamespace = $cli->getNamespace('ORM');
*
* @param string $name CLI Namespace name
*
* @return TaskNamespace CLI Namespace
*/
public
function
getNamespace
(
$name
)
{
$name
=
self
::
formatName
(
$name
);
return
isset
(
$this
->
_namespaces
[
$name
])
?
$this
->
_namespaces
[
$name
]
:
null
;
}
/**
* Check existance of a CLI Namespace
*
* @param string CLI Namespace name
*
* @return boolean TRUE if namespace if defined, false otherwise
*/
public
function
hasNamespace
(
$name
)
{
return
(
$this
->
getNamespace
(
$name
)
!==
null
);
}
/**
* Defines the parent CLI Namespace
*
* @return AbstractNamespace
*/
public
function
setParentNamespace
(
AbstractNamespace
$namespace
)
{
$this
->
_parentNamespace
=
$namespace
;
return
$this
;
}
/**
* Retrieves currently parent CLI Namespace
*
* @return AbstractNamespace
*/
public
function
getParentNamespace
()
{
return
$this
->
_parentNamespace
;
}
/**
* Retrieve all defined CLI Tasks
*
* @return array
*/
public
function
getAvailableTasks
()
{
$tasks
=
array
();
foreach
(
$this
->
_namespaces
as
$namespace
)
{
$tasks
=
array_merge
(
$tasks
,
$namespace
->
getAvailableTasks
());
}
return
$tasks
;
}
/**
* Defines the CLI Output Printer
*
* @param AbstractPrinter $printer CLI Output Printer
*
* @return AbstractNamespace
*/
public
function
setPrinter
(
Printers\AbstractPrinter
$printer
=
null
)
{
$this
->
_printer
=
$printer
?:
new
Printers\AnsiColorPrinter
;
return
$this
;
}
/**
* Retrieves currently used CLI Output Printer
*
* @return AbstractPrinter
*/
public
function
getPrinter
()
{
return
$this
->
_printer
;
}
/**
* Defines the CLI Configuration
*
* #param Configuration $configuration CLI Configuration
*
* @return AbstractNamespace
*/
public
function
setConfiguration
(
Configuration
$config
)
{
$this
->
_configuration
=
$config
;
return
$this
;
}
/**
* Retrieves currently used CLI Configuration
*
* @return Configuration
*/
public
function
getConfiguration
()
{
return
$this
->
_configuration
;
}
/**
* Formats the CLI Namespace name into a camel-cased name
*
* @param string $name CLI Namespace name
*
* @return string Formatted CLI Namespace name
*/
public
static
function
formatName
(
$name
)
{
return
Inflector
::
classify
(
$name
);
}
}
\ No newline at end of file
lib/Doctrine/Common/CLI/CLIController.php
deleted
100644 → 0
View file @
5381e3d5
This diff is collapsed.
Click to expand it.
lib/Doctrine/Common/CLI/CLIException.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI
;
/**
* CLI Exception class
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
CLIException
extends
\Exception
{
public
static
function
namespaceDoesNotExist
(
$namespaceName
,
$namespacePath
=
''
)
{
return
new
self
(
"Namespace '
{
$namespaceName
}
' does not exist"
.
((
!
empty
(
$namespacePath
))
?
" in '
{
$namespacePath
}
'."
:
'.'
)
);
}
public
static
function
taskDoesNotExist
(
$taskName
,
$namespacePath
)
{
return
new
self
(
"Task '
{
$taskName
}
' does not exist in '
{
$namespacePath
}
'."
);
}
public
static
function
cannotOverrideTask
(
$taskName
)
{
return
new
self
(
"Task '
{
$taskName
}
' cannot be overriden."
);
}
public
static
function
cannotOverrideNamespace
(
$namespace
)
{
return
new
self
(
"Namespace '
$namespace
' cannot be overriden. Call overrideNamespace() directly."
);
}
}
\ No newline at end of file
lib/Doctrine/Common/CLI/Configuration.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI
;
/**
* CLI Configuration class
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
Configuration
{
/**
* @var array Configuration attributes
*/
private
$_attributes
=
array
();
/**
* Defines a new configuration attribute
*
* @param string $name Attribute name
* @param mixed $value Attribute value
*
* @return Configuration This object instance
*/
public
function
setAttribute
(
$name
,
$value
=
null
)
{
$this
->
_attributes
[
$name
]
=
$value
;
if
(
$value
===
null
)
{
unset
(
$this
->
_attributes
[
$name
]);
}
return
$this
;
}
/**
* Retrieves a configuration attribute
*
* @param string $name Attribute name
*
* @return mixed Attribute value
*/
public
function
getAttribute
(
$name
)
{
return
isset
(
$this
->
_attributes
[
$name
])
?
$this
->
_attributes
[
$name
]
:
null
;
}
/**
* Checks if configuration attribute is defined
*
* @param string $name Attribute name
*
* @return boolean TRUE if attribute exists, FALSE otherwise
*/
public
function
hasAttribute
(
$name
)
{
return
isset
(
$this
->
_attributes
[
$name
]);
}
}
\ No newline at end of file
lib/Doctrine/Common/CLI/Option.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI
;
/**
* CLI Option definition
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
Option
{
/** @var string Option name */
private
$_name
;
/** @var string Option default value */
private
$_defaultValue
;
/** @var string Option description */
private
$description
;
/**
* Constructs a CLI Option
*
* @param string Option name
* @param integer Option type
* @param string Option description
*/
public
function
__construct
(
$name
,
$defaultValue
,
$description
)
{
$this
->
_name
=
$name
;
$this
->
_defaultValue
=
$defaultValue
;
$this
->
_description
=
$description
;
}
/**
* Retrieves the CLI Option name
*
* @return string Option name
*/
public
function
getName
()
{
return
$this
->
_name
;
}
/**
* Retrieves the CLI Option default value
*
* @return mixed Option default value
*/
public
function
getDefaultValue
()
{
return
$this
->
_defaultValue
;
}
/**
* Retrieves the CLI Option description
*
* @return string Option description
*/
public
function
getDescription
()
{
return
$this
->
_description
;
}
/**
* Converts the Option instance into a string representation
*
* @return string CLI Option representation in string
*/
public
function
__toString
()
{
$defaultValue
=
(
!
is_null
(
$this
->
_defaultValue
))
?
'='
.
(
is_array
(
$this
->
_defaultValue
)
?
implode
(
','
,
$this
->
_defaultValue
)
:
$this
->
_defaultValue
)
:
''
;
return
'--'
.
$this
->
_name
.
$defaultValue
;
}
}
\ No newline at end of file
lib/Doctrine/Common/CLI/OptionGroup.php
deleted
100644 → 0
View file @
5381e3d5
This diff is collapsed.
Click to expand it.
lib/Doctrine/Common/CLI/Printers/AbstractPrinter.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI\Printers
;
use
Doctrine\Common\CLI\Style
;
/**
* CLI Output Printer.
* Abstract class responsable to provide basic methods to support output
* styling and excerpt limited by output margin.
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
abstract
class
AbstractPrinter
{
/**
* @var resource Output Stream
*/
protected
$_stream
;
/**
* @var integer Maximum column size
*/
protected
$_maxColumnSize
;
/**
* @var array Array of Styles
*/
protected
$_styles
;
/**
* Creates an instance of Printer
*
* @param resource $stream Output Stream
*/
public
function
__construct
(
$stream
=
STDOUT
)
{
$this
->
_stream
=
$stream
;
$this
->
_maxColumnSize
=
80
;
$this
->
_initStyles
();
}
/**
* Initializes Printer Styles
*
*/
protected
function
_initStyles
()
{
// Defines base styles
$this
->
addStyles
(
array
(
'ERROR'
=>
new
Style
(),
'INFO'
=>
new
Style
(),
'COMMENT'
=>
new
Style
(),
'HEADER'
=>
new
Style
(),
'NONE'
=>
new
Style
(),
));
}
/**
* Add a collection of styles to the Printer.
* To include them, just call the method with the following structure:
*
* [php]
* $printer->addStyles(array(
* 'ERROR' => new Style('BLACK', 'DEFAULT', array('BOLD' => true)),
* ...
* ));
*
* @param array $tasks CLI Tasks to be included
*/
public
function
addStyles
(
$styles
)
{
foreach
(
$styles
as
$name
=>
$style
)
{
$this
->
addStyle
(
$name
,
$style
);
}
}
/**
* Add a single Style to Printer.
* Example of inclusion to support a new Style:
*
* [php]
* $printer->addStyle('ERROR', new Style('BLACK', 'DEFAULT', array('BOLD' => true)));
*
* @param string $name Style name
* @param Style $style Style instance
*/
public
function
addStyle
(
$name
,
Style
$style
)
{
$this
->
_styles
[
strtoupper
(
$name
)]
=
$style
;
}
/**
* Retrieves a defined Style.
*
* @return Style
*/
public
function
getStyle
(
$name
)
{
if
(
is_string
(
$name
))
{
$name
=
strtoupper
(
$name
);
return
isset
(
$this
->
_styles
[
$name
])
?
$this
->
_styles
[
$name
]
:
null
;
}
return
$name
;
}
/**
* Sets the maximum column size (defines the CLI margin).
*
* @param integer $maxColumnSize The maximum column size for a message
*/
public
function
setMaxColumnSize
(
$maxColumnSize
)
{
$this
->
_maxColumnSize
=
$maxColumnSize
;
}
/**
* Writes to the output stream.
*
* @param string $message Message to be outputted
*/
public
function
output
(
$message
)
{
fwrite
(
$this
->
_stream
,
$message
);
return
$this
;
}
/**
* Formats message applying the defined style and writes to the output stream.
*
* @param string $message Message to be outputted
* @param mixed $style Optional style to be applied in message
*/
public
function
write
(
$message
,
$style
=
'NONE'
)
{
$this
->
output
(
$this
->
format
(
$message
,
$style
));
return
$this
;
}
/**
* Writes a line to the output stream, formatting it by applying the defined style.
*
* @param string $message Message to be outputted
* @param mixed $style Optional style to be applied in message
*/
public
function
writeln
(
$message
,
$style
=
'NONE'
)
{
$this
->
output
(
$this
->
format
(
$message
,
$style
)
.
PHP_EOL
);
return
$this
;
}
/**
* Formats the given message with the defined style.
*
* @param string $message Message to be formatted
* @param mixed $style Style to be applied in message
* @return string Formatted message
*/
abstract
public
function
format
(
$message
,
$style
);
}
\ No newline at end of file
lib/Doctrine/Common/CLI/Printers/AnsiColorPrinter.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI\Printers
;
use
Doctrine\Common\CLI\Style
;
/**
* CLI Output Printer for ANSI Color terminal
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
AnsiColorPrinter
extends
AbstractPrinter
{
/**
* @inheritdoc
*/
protected
function
_initStyles
()
{
$this
->
addStyles
(
array
(
'HEADER'
=>
new
Style
(
'DEFAULT'
,
'DEFAULT'
,
array
(
'BOLD'
=>
true
)),
'ERROR'
=>
new
Style
(
'WHITE'
,
'RED'
,
array
(
'BOLD'
=>
true
)),
'WARNING'
=>
new
Style
(
'DEFAULT'
,
'YELLOW'
),
'KEYWORD'
=>
new
Style
(
'BLUE'
,
'DEFAULT'
,
array
(
'BOLD'
=>
true
)),
'REQ_ARG'
=>
new
Style
(
'MAGENTA'
,
'DEFAULT'
,
array
(
'BOLD'
=>
true
)),
'OPT_ARG'
=>
new
Style
(
'CYAN'
,
'DEFAULT'
,
array
(
'BOLD'
=>
true
)),
'INFO'
=>
new
Style
(
'GREEN'
,
'DEFAULT'
,
array
(
'BOLD'
=>
true
)),
'COMMENT'
=>
new
Style
(
'DEFAULT'
,
'MAGENTA'
),
'NONE'
=>
new
Style
(),
));
}
/**
* @inheritdoc
*/
public
function
format
(
$message
,
$style
=
'NONE'
)
{
if
(
!
$this
->
_supportsColor
())
{
return
$message
;
}
$style
=
$this
->
getStyle
(
$style
);
$str
=
$this
->
_getForegroundString
(
$style
)
.
$this
->
_getBackgroundString
(
$style
);
$styleSet
=
(
$str
!=
''
);
return
$str
.
$message
.
(
$styleSet
?
chr
(
27
)
.
'[0m'
:
''
);
}
/**
* Retrieves the ANSI string representation of requested color name
*
* @param Style $style Style
* @return string
*/
protected
function
_getBackgroundString
(
Style
$style
)
{
$background
=
$style
->
getBackground
();
if
(
empty
(
$background
))
{
return
''
;
}
$esc
=
chr
(
27
);
switch
(
strtoupper
(
$background
))
{
case
'BLACK'
:
return
$esc
.
'[40m'
;
case
'RED'
:
return
$esc
.
'[41m'
;
case
'GREEN'
:
return
$esc
.
'[42m'
;
case
'YELLOW'
:
return
$esc
.
'[43m'
;
case
'BLUE'
:
return
$esc
.
'[44m'
;
case
'MAGENTA'
:
return
$esc
.
'[45m'
;
case
'CYAN'
:
return
$esc
.
'[46m'
;
case
'WHITE'
:
return
$esc
.
'[47m'
;
case
'DEFAULT'
:
default
:
return
$esc
.
'[48m'
;
}
}
/**
* Retrieves the ANSI string representation of requested color name
*
* @param Style $style Style
* @return string
*/
protected
function
_getForegroundString
(
Style
$style
)
{
$foreground
=
$style
->
getForeground
();
if
(
empty
(
$foreground
))
{
return
''
;
}
$str
=
chr
(
27
)
.
'['
.
$this
->
_getOptionsString
(
$style
);
switch
(
strtoupper
(
$foreground
))
{
case
'BLACK'
:
return
$str
.
'30m'
;
case
'RED'
:
return
$str
.
'31m'
;
case
'GREEN'
:
return
$str
.
'32m'
;
case
'YELLOW'
:
return
$str
.
'33m'
;
case
'BLUE'
:
return
$str
.
'34m'
;
case
'MAGENTA'
:
return
$str
.
'35m'
;
case
'CYAN'
:
return
$str
.
'36m'
;
case
'WHITE'
:
return
$str
.
'37m'
;
case
'DEFAULT_FGU'
:
return
$str
.
'38m'
;
case
'DEFAULT'
:
default
:
return
$str
.
'39m'
;
}
}
/**
* Retrieves the ANSI string representation of requested options
*
* @param Style $style Style
* @return string
*/
protected
function
_getOptionsString
(
Style
$style
)
{
$options
=
$style
->
getOptions
();
if
(
empty
(
$options
))
{
return
''
;
}
$str
=
''
;
foreach
(
$options
as
$name
=>
$value
)
{
if
(
$value
)
{
$name
=
strtoupper
(
$name
);
switch
(
$name
)
{
case
'BOLD'
:
$str
.=
'1;'
;
break
;
case
'HALF'
:
$str
.=
'2;'
;
break
;
case
'UNDERLINE'
:
$str
.=
'4;'
;
break
;
case
'BLINK'
:
$str
.=
'5;'
;
break
;
case
'REVERSE'
:
$str
.=
'7;'
;
break
;
case
'CONCEAL'
:
$str
.=
'8;'
;
break
;
default
:
// Ignore unknown option
break
;
}
}
}
return
$str
;
}
/**
* Checks if the current Output Stream supports ANSI Colors
*
* @return boolean
*/
private
function
_supportsColor
()
{
return
DIRECTORY_SEPARATOR
!=
'\\'
&&
function_exists
(
'posix_isatty'
)
&&
@
posix_isatty
(
$this
->
_stream
);
}
}
\ No newline at end of file
lib/Doctrine/Common/CLI/Printers/NormalPrinter.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI\Printers
;
use
Doctrine\Common\CLI\Style
;
/**
* CLI Output Printer for Normal terminal
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
NormalPrinter
extends
AbstractPrinter
{
/**
* @inheritdoc
*/
public
function
format
(
$message
,
$style
)
{
return
$message
;
}
}
\ No newline at end of file
lib/Doctrine/Common/CLI/Style.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI
;
/**
* CLI Output Style
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
Style
{
/**
* @var string Background color
*/
private
$_background
;
/**
* @var string Foreground color
*/
private
$_foreground
;
/**
* @var array Formatting options
*/
private
$_options
=
array
();
/**
* @param string $foreground Foreground color name
* @param string $background Background color name
* @param array $options Formatting options
*/
public
function
__construct
(
$foreground
=
null
,
$background
=
null
,
$options
=
array
())
{
$this
->
_foreground
=
strtoupper
(
$foreground
);
$this
->
_background
=
strtoupper
(
$background
);
$this
->
_options
=
$options
;
}
/**
* Retrieves the foreground color name
*
* @return string
*/
public
function
getForeground
()
{
return
$this
->
_foreground
;
}
/**
* Retrieves the background color name
*
* @return string
*/
public
function
getBackground
()
{
return
$this
->
_background
;
}
/**
* Retrieves the formatting options
*
* @return string
*/
public
function
getOptions
()
{
return
$this
->
_options
;
}
}
\ No newline at end of file
lib/Doctrine/Common/CLI/TaskDocumentation.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI
;
use
Doctrine\Common\CLI\Printers\AbstractPrinter
,
Doctrine\Common\CLI\OptionGroup
,
Doctrine\Common\CLI\Option
;
/**
* CLI Task documentation
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
TaskDocumentation
{
/** @var AbstractPrinter CLI Printer */
private
$_printer
;
/** @var AbstractNamespace CLI Namespace */
private
$_namespace
;
/** @var string CLI Task name */
private
$_name
;
/** @var string CLI Task description */
private
$_description
;
/** @var array CLI Task Option Group */
private
$_optionGroup
;
/**
* Constructs a new CLI Task Documentation
*
* @param AbstractNamespace CLI Namespace
*/
public
function
__construct
(
AbstractNamespace
$namespace
)
{
$this
->
_namespace
=
$namespace
;
$this
->
_printer
=
$namespace
->
getPrinter
();
$this
->
_optionGroup
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_M_N
);
}
/**
* Retrieves the CLI Namespace
*
* @return AbstractNamespace
*/
public
function
getNamespace
()
{
return
$this
->
_namespace
;
}
/**
* Defines the CLI Task name
*
* @param string Task name
* @return TaskDocumentation This object instance
*/
public
function
setName
(
$name
)
{
$this
->
_name
=
$name
;
return
$this
;
}
/**
* Retrieves the CLI Task name
*
* @return string Task name
*/
public
function
getName
()
{
return
$this
->
_name
;
}
/**
* Retrieves the full CLI Task name
*
* @return string Task full name
*/
public
function
getFullName
()
{
return
$this
->
getNamespace
()
->
getFullName
()
.
':'
.
$this
->
_name
;
}
/**
* Defines the CLI Task description
*
* @param string Task description
* @return TaskDocumentation This object instance
*/
public
function
setDescription
(
$description
)
{
$this
->
_description
=
$description
;
return
$this
;
}
/**
* Retrieves the CLI Task description
*
* @var string Task description
*/
public
function
getDescription
()
{
return
$this
->
_description
;
}
/**
* Retrieves the CLI Task Option Group
*
* @return OptionGroup CLI Task Option Group
*/
public
function
getOptionGroup
()
{
return
$this
->
_optionGroup
;
}
/**
* Includes a new CLI Option Group to the CLI Task documentation
*
* @param OptionGroup CLI Option Group
* @return TaskDocumentation This object instance
*/
public
function
addOption
(
$option
)
{
if
(
$option
instanceof
OptionGroup
)
{
$this
->
_optionGroup
->
addOption
(
$option
);
}
return
$this
;
}
/**
* Retrieves the synopsis of associated CLI Task
*
* @return string CLI Task synopsis
*/
public
function
getSynopsis
()
{
return
$this
->
_printer
->
format
(
$this
->
getFullName
(),
'KEYWORD'
)
.
' '
.
trim
(
$this
->
_optionGroup
->
formatPlain
(
$this
->
_printer
));
}
/**
* Retrieve the complete documentation of associated CLI Task
*
* @return string CLI Task complete documentation
*/
public
function
getCompleteDocumentation
()
{
$printer
=
$this
->
_printer
;
return
$printer
->
format
(
'Task: '
)
.
$printer
->
format
(
$this
->
getFullName
(),
'KEYWORD'
)
.
$printer
->
format
(
PHP_EOL
)
.
$printer
->
format
(
'Synopsis: '
)
.
$this
->
getSynopsis
()
.
$printer
->
format
(
PHP_EOL
)
.
$printer
->
format
(
'Description: '
)
.
$printer
->
format
(
$this
->
_description
)
.
$printer
->
format
(
PHP_EOL
)
.
$printer
->
format
(
'Options: '
)
.
$printer
->
format
(
PHP_EOL
)
.
$this
->
_optionGroup
->
formatWithDescription
(
$printer
);
}
}
lib/Doctrine/Common/CLI/TaskNamespace.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI
;
/**
* CLI Namespace class
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
TaskNamespace
extends
AbstractNamespace
{
/**
* @var boolean CLI Tasks flag to check if they are already initialized
*/
private
$_initialized
=
false
;
/**
* @var string CLI Namespace full name
*/
private
$_fullName
=
null
;
/**
* @var string CLI Namespace name
*/
private
$_name
=
null
;
/**
* @var array Available tasks
*/
private
$_tasks
=
array
();
/**
* The CLI namespace
*
* @param string $name CLI Namespace name
*/
public
function
__construct
(
$name
)
{
$this
->
_name
=
self
::
formatName
(
$name
);
}
/**
* Retrieve an instantiated CLI Task by given its name.
*
* @param string $name CLI Task name
*
* @return AbstractTask
*/
public
function
getTask
(
$name
)
{
// Check if task exists in namespace
if
(
$this
->
hasTask
(
$name
))
{
$taskClass
=
$this
->
_tasks
[
self
::
formatName
(
$name
)];
return
new
$taskClass
(
$this
);
}
throw
CLIException
::
taskDoesNotExist
(
$name
,
$this
->
getFullName
());
}
/**
* Retrieve all CLI Task in this Namespace.
*
* @return array
*/
public
function
getTasks
()
{
return
$this
->
_tasks
;
}
/**
* Retrieve all defined CLI Tasks
*
* @return array
*/
public
function
getAvailableTasks
()
{
$tasks
=
parent
::
getAvailableTasks
();
foreach
(
$this
->
_tasks
as
$taskName
=>
$taskClass
)
{
$fullName
=
$this
->
getFullName
()
.
':'
.
$taskName
;
$tasks
[
$fullName
]
=
$taskClass
;
}
return
$tasks
;
}
/**
* Add a single task to CLI Namespace.
* Example of inclusion support to a single task:
*
* [php]
* $cliOrmNamespace->addTask('my-custom-task', 'MyProject\Cli\Tasks\MyCustomTask');
*
* @param string $name CLI Task name
* @param string $class CLI Task class (FQCN - Fully Qualified Class Name)
*
* @return TaskNamespace This object instance
*/
public
function
addTask
(
$name
,
$class
)
{
$name
=
self
::
formatName
(
$name
);
if
(
$this
->
hasTask
(
$name
))
{
throw
CLIException
::
cannotOverrideTask
(
$name
);
}
return
$this
->
overrideTask
(
$name
,
$class
);
}
/**
* Overrides task on CLI Namespace.
* Example of inclusion support to a single task:
*
* [php]
* $cliOrmNamespace->overrideTask('schema-tool', 'MyProject\Cli\Tasks\MyCustomTask');
*
* @param string $name CLI Task name
* @param string $class CLI Task class (FQCN - Fully Qualified Class Name)
*
* @return TaskNamespace This object instance
*/
public
function
overrideTask
(
$name
,
$class
)
{
$name
=
self
::
formatName
(
$name
);
$this
->
_tasks
[
$name
]
=
$class
;
return
$this
;
}
/**
* Check existance of a CLI Task
*
* @param string CLI Task name
*
* @return boolean TRUE if CLI Task if defined, false otherwise
*/
public
function
hasTask
(
$name
)
{
$name
=
self
::
formatName
(
$name
);
return
isset
(
$this
->
_tasks
[
$name
]);
}
/**
* Retrieves the CLI Namespace name
*
* @return string CLI Namespace name
*/
public
function
getName
()
{
return
$this
->
_name
;
}
/**
* Retrieves the full CLI Namespace name
*
* @return string CLI Namespace full name
*/
public
function
getFullName
()
{
if
(
$this
->
_fullName
===
null
)
{
$str
=
$this
->
_name
;
while
(
(
$parentNamespace
=
$this
->
getParentNamespace
())
!==
null
&&
!
(
$parentNamespace
instanceof
CliController
)
)
{
$str
=
$parentNamespace
->
getFullName
()
.
':'
.
$str
;
}
$this
->
_fullName
=
$str
;
}
return
$this
->
_fullName
;
}
/**
* Effectively instantiate and execute a given CLI Task
*
* @param string $name CLI Task name
* @param array $arguments CLI Task arguments
*/
public
function
runTask
(
$name
,
$arguments
=
array
())
{
try
{
$task
=
$this
->
getTask
(
$name
);
// Merge global configuration if it exists
if
((
$globalArgs
=
$this
->
getConfiguration
()
->
getAttribute
(
'globalArguments'
))
!==
null
)
{
$arguments
=
array_merge
(
$globalArgs
,
$arguments
);
}
$task
->
setArguments
(
$arguments
);
if
((
isset
(
$arguments
[
'help'
])
&&
$arguments
[
'help'
])
||
(
isset
(
$arguments
[
'h'
])
&&
$arguments
[
'h'
]))
{
$task
->
extendedHelp
();
// User explicitly asked for help option
}
else
if
(
isset
(
$arguments
[
'basic-help'
])
&&
$arguments
[
'basic-help'
])
{
$task
->
basicHelp
();
// User explicitly asked for basic help option
}
else
if
(
$task
->
validate
())
{
$task
->
run
();
}
}
catch
(
CLIException
$e
)
{
$message
=
$this
->
getFullName
()
.
':'
.
$name
.
' => '
.
$e
->
getMessage
();
$printer
=
$this
->
getPrinter
();
// If we want the trace of calls, append to error message
if
(
isset
(
$arguments
[
'trace'
])
&&
$arguments
[
'trace'
])
{
$message
.=
PHP_EOL
.
PHP_EOL
.
$e
->
getTraceAsString
();
}
$printer
->
writeln
(
$message
,
'ERROR'
);
// Unable instantiate task or task is not valid
if
(
isset
(
$task
)
&&
$task
!==
null
)
{
$printer
->
write
(
PHP_EOL
);
$task
->
basicHelp
();
// Fallback of not-valid task arguments
}
$printer
->
write
(
PHP_EOL
);
}
}
}
\ No newline at end of file
lib/Doctrine/Common/CLI/Tasks/AbstractTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI\Tasks
;
use
Doctrine\Common\CLI\AbstractNamespace
,
Doctrine\Common\CLI\TaskDocumentation
;
/**
* Base class for CLI Tasks.
* Provides basic methods and requires implementation of methods that
* each task should implement in order to correctly work.
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
abstract
class
AbstractTask
{
/**
* @var AbstractNamespace CLI Namespace
*/
protected
$_printer
;
/**
* @var TaskDocumentation CLI Task Documentation
*/
protected
$_documentation
;
/**
* @var array CLI Task arguments
*/
protected
$_arguments
=
array
();
/**
* Constructor of CLI Task
*
* @param AbstractNamespace CLI Namespace
*/
public
function
__construct
(
AbstractNamespace
$namespace
)
{
$this
->
_namespace
=
$namespace
;
$this
->
_documentation
=
new
TaskDocumentation
(
$namespace
);
// Complete the CLI Task Documentation creation
$this
->
buildDocumentation
();
}
/**
* Retrieves the CLI Namespace
*
* @return AbstractNamespace
*/
public
function
getNamespace
()
{
return
$this
->
_namespace
;
}
/**
* Retrieves the CLI Task Documentation
*
* @return TaskDocumentation
*/
public
function
getDocumentation
()
{
return
$this
->
_documentation
;
}
/**
* Defines the CLI Task arguments
*
* @param array $arguments CLI Task arguments
*
* @return AbstractTask
*/
public
function
setArguments
(
array
$arguments
=
array
())
{
$this
->
_arguments
=
$arguments
;
return
$this
;
}
/**
* Retrieves the CLI Task arguments
*
* @return array
*/
public
function
getArguments
()
{
return
$this
->
_arguments
;
}
/**
* Retrieves currently used CLI Output Printer
*
* @return AbstractPrinter
*/
public
function
getPrinter
()
{
return
$this
->
_namespace
->
getPrinter
();
}
/**
* Retrieves current used CLI Configuration
*
* @return Configuration
*/
public
function
getConfiguration
()
{
return
$this
->
_namespace
->
getConfiguration
();
}
/**
* Expose to CLI Output Printer the extended help of the given task.
* This means it should detail all parameters, options and the meaning
* of each one.
* This method is executed when user types in CLI the following command:
*
* [bash]
* ./doctrine task --help
*
*/
public
function
extendedHelp
()
{
$this
->
getPrinter
()
->
output
(
$this
->
_documentation
->
getCompleteDocumentation
());
}
/**
* Expose to CLI Output Printer the basic help of the given task.
* This means it should only expose the basic task call. It is also
* executed when user calls the global help; so this means it should
* not pollute the Printer.
* Basic help exposure is displayed when task does not pass the validate
* (which means when user does not type the required options or when given
* options are invalid, ie: invalid option), or when user requests to have
* description of all available tasks.
* This method is executed when user uses the following commands:
*
* [bash]
* ./doctrine task --invalid-option
* ./doctrine --help
*
*/
public
function
basicHelp
()
{
$this
->
getPrinter
()
->
output
(
$this
->
_documentation
->
getSynopsis
())
->
output
(
PHP_EOL
)
->
output
(
' '
.
$this
->
_documentation
->
getDescription
())
->
output
(
PHP_EOL
.
PHP_EOL
);
}
/**
* Assures the given arguments matches with required/optional ones.
* This method should be used to introspect arguments to check for
* missing required arguments and also for invalid defined options.
*
* @return boolean
*/
public
function
validate
()
{
// TODO implement DAG here!
return
true
;
}
/**
* Safely execution of task.
* Each CLI task should implement this as normal flow execution of
* what is supposed to do.
*/
abstract
public
function
run
();
/**
* Generate the CLI Task Documentation
*/
abstract
public
function
buildDocumentation
();
}
lib/Doctrine/Common/CLI/Tasks/HelpTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI\Tasks
;
use
Doctrine\Common\CLI\CLIException
;
/**
* CLI Task to display available commands help
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
HelpTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'help'
)
->
setDescription
(
'Exposes helpful information about all available tasks.'
);
}
/**
* @inheritdoc
*/
public
function
extendedHelp
()
{
$this
->
run
();
}
/**
* Exposes the available tasks
*
*/
public
function
run
()
{
$this
->
getPrinter
()
->
writeln
(
'Available Tasks:'
,
'HEADER'
)
->
write
(
PHP_EOL
);
// Find the CLI Controller
$cliController
=
$this
->
getNamespace
()
->
getParentNamespace
();
// Switch between ALL available tasks and display the basic Help of each one
$availableTasks
=
$cliController
->
getAvailableTasks
();
//unset($availableTasks['Core:Help']);
ksort
(
$availableTasks
);
foreach
(
array_keys
(
$availableTasks
)
as
$taskName
)
{
$cliController
->
runTask
(
$taskName
,
array
(
'basic-help'
=>
true
));
}
}
}
\ No newline at end of file
lib/Doctrine/Common/CLI/Tasks/VersionTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\Common\CLI\Tasks
;
use
Doctrine\Common\Version
;
/**
* CLI Task to display the doctrine version
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
VersionTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
// There're no options on this task
$this
->
getDocumentation
()
->
getOptionGroup
()
->
clear
();
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'version'
)
->
setDescription
(
'Displays the current installed Doctrine version.'
);
}
/**
* Displays the current version of Doctrine
*
*/
public
function
run
()
{
$this
->
getPrinter
()
->
writeln
(
'You are currently running Doctrine '
.
Version
::
VERSION
,
'INFO'
);
}
}
\ No newline at end of file
lib/Doctrine/DBAL/Tools/CLI/Tasks/RunSqlTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\DBAL\Tools\CLI\Tasks
;
use
Doctrine\Common\CLI\Tasks\AbstractTask
,
Doctrine\Common\CLI\CLIException
,
Doctrine\Common\Util\Debug
,
Doctrine\Common\CLI\Option
,
Doctrine\Common\CLI\OptionGroup
;
/**
* Task for executing arbitrary SQL that can come from a file or directly from
* the command line.
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
RunSqlTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
$dqlAndFile
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_1_1
,
array
(
new
Option
(
'sql'
,
'<SQL>'
,
'The SQL to execute.'
.
PHP_EOL
.
'If defined, --file can not be requested on same task.'
),
new
Option
(
'file'
,
'<PATH>'
,
'The path to the file with the SQL to execute.'
.
PHP_EOL
.
'If defined, --sql can not be requested on same task.'
)
));
$depth
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_0_1
,
array
(
new
Option
(
'depth'
,
'<DEPTH>'
,
'Dumping depth of Entities graph.'
)
));
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'run-sql'
)
->
setDescription
(
'Executes arbitrary SQL from a file or directly from the command line.'
)
->
getOptionGroup
()
->
addOption
(
$dqlAndFile
)
->
addOption
(
$depth
);
}
/**
* @inheritdoc
*/
public
function
validate
()
{
$arguments
=
$this
->
getArguments
();
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
if
(
$em
===
null
)
{
throw
new
CLIException
(
"Attribute 'em' of CLI Configuration is not defined or it is not a valid EntityManager."
);
}
if
(
!
(
isset
(
$arguments
[
'sql'
])
^
isset
(
$arguments
[
'file'
])))
{
throw
new
CLIException
(
'One of --sql or --file required, and only one.'
);
}
return
true
;
}
/**
* Executes the task.
*/
public
function
run
()
{
$arguments
=
$this
->
getArguments
();
if
(
isset
(
$arguments
[
'file'
]))
{
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
$conn
=
$em
->
getConnection
();
$printer
=
$this
->
getPrinter
();
$fileNames
=
(
array
)
$arguments
[
'file'
];
foreach
(
$fileNames
as
$fileName
)
{
if
(
!
file_exists
(
$fileName
))
{
throw
new
CLIException
(
sprintf
(
'The SQL file [%s] does not exist.'
,
$fileName
));
}
else
if
(
!
is_readable
(
$fileName
))
{
throw
new
CLIException
(
sprintf
(
'The SQL file [%s] does not have read permissions.'
,
$fileName
));
}
$printer
->
write
(
'Processing file ['
.
$fileName
.
']... '
);
$sql
=
file_get_contents
(
$fileName
);
if
(
$conn
instanceof
\Doctrine\DBAL\Driver\PDOConnection
)
{
// PDO Drivers
try
{
$lines
=
0
;
$stmt
=
$conn
->
prepare
(
$sql
);
$stmt
->
execute
();
do
{
// Required due to "MySQL has gone away!" issue
$stmt
->
fetch
();
$stmt
->
closeCursor
();
$lines
++
;
}
while
(
$stmt
->
nextRowset
());
$printer
->
writeln
(
sprintf
(
'%d statements executed!'
,
$lines
));
}
catch
(
\PDOException
$e
)
{
$printer
->
writeln
(
'error!'
)
->
writeln
(
$e
->
getMessage
());
}
}
else
{
// Non-PDO Drivers (ie. OCI8 driver)
$stmt
=
$conn
->
prepare
(
$sql
);
$rs
=
$stmt
->
execute
();
if
(
$rs
)
{
$printer
->
writeln
(
'OK!'
);
}
else
{
$error
=
$stmt
->
errorInfo
();
$printer
->
writeln
(
'error!'
)
->
writeln
(
$error
[
'message'
]);
}
$stmt
->
closeCursor
();
}
}
}
else
if
(
isset
(
$arguments
[
'sql'
]))
{
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
if
(
preg_match
(
'/^select/i'
,
$arguments
[
'sql'
]))
{
$stmt
=
$em
->
getConnection
()
->
executeQuery
(
$arguments
[
'sql'
]);
$resultSet
=
$stmt
->
fetchAll
(
\Doctrine\DBAL\Connection
::
FETCH_ASSOC
);
}
else
{
$resultSet
=
$em
->
getConnection
()
->
executeUpdate
(
$arguments
[
'sql'
]);
}
$maxDepth
=
isset
(
$arguments
[
'depth'
])
?
$arguments
[
'depth'
]
:
7
;
Debug
::
dump
(
$resultSet
,
$maxDepth
);
}
}
}
\ No newline at end of file
lib/Doctrine/DBAL/Tools/CLI/Tasks/VersionTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\DBAL\Tools\CLI\Tasks
;
use
Doctrine\Common\CLI\Tasks\AbstractTask
,
Doctrine\Common\Version
;
/**
* CLI Task to display the doctrine version
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
VersionTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
// There're no options on this task
$this
->
getDocumentation
()
->
getOptionGroup
()
->
clear
();
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'version'
)
->
setDescription
(
'Displays the current installed Doctrine version.'
);
}
/**
* Displays the current version of Doctrine
*
*/
public
function
run
()
{
$this
->
getPrinter
()
->
writeln
(
'You are currently running Doctrine '
.
Version
::
VERSION
,
'INFO'
);
}
}
\ No newline at end of file
lib/Doctrine/ORM/Tools/CLI/Tasks/ClearCacheTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\ORM\Tools\CLI\Tasks
;
use
Doctrine\Common\CLI\Tasks\AbstractTask
,
Doctrine\Common\CLI\CliException
,
Doctrine\Common\CLI\Option
,
Doctrine\Common\CLI\OptionGroup
,
Doctrine\Common\Cache\AbstractDriver
;
/**
* CLI Task to clear the cache of the various cache drivers
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
ClearCacheTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
$cacheOptions
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_1_1
,
array
(
new
Option
(
'query'
,
null
,
'Clear the query cache.'
),
new
Option
(
'metadata'
,
null
,
'Clear the metadata cache.'
),
new
OptionGroup
(
OptionGroup
::
CARDINALITY_M_N
,
array
(
new
OptionGroup
(
OptionGroup
::
CARDINALITY_1_1
,
array
(
new
Option
(
'result'
,
null
,
'Clear the result cache.'
)
)),
new
OptionGroup
(
OptionGroup
::
CARDINALITY_0_N
,
array
(
new
Option
(
'id'
,
'<ID>'
,
'The id of the cache entry to delete (accepts * wildcards).'
),
new
Option
(
'regex'
,
'<REGEX>'
,
'Delete cache entries that match the given regular expression.'
),
new
Option
(
'prefix'
,
'<PREFIX>'
,
'Delete cache entries that have the given prefix.'
),
new
Option
(
'suffix'
,
'<SUFFIX>'
,
'Delete cache entries that have the given suffix.'
)
))
))
));
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'clear-cache'
)
->
setDescription
(
'Clear cache from configured query, result and metadata drivers.'
)
->
getOptionGroup
()
->
addOption
(
$cacheOptions
);
}
/**
* @inheritdoc
*/
public
function
validate
()
{
$arguments
=
$this
->
getArguments
();
// Check if we have an active EntityManager
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
if
(
$em
===
null
)
{
throw
new
CLIException
(
"Attribute 'em' of CLI Configuration is not defined or it is not a valid EntityManager."
);
}
// When clearing the query cache no need to specify
// id, regex, prefix or suffix.
if
(
(
isset
(
$arguments
[
'query'
])
||
isset
(
$arguments
[
'metadata'
]))
&&
(
isset
(
$arguments
[
'id'
])
||
isset
(
$arguments
[
'regex'
])
||
isset
(
$arguments
[
'prefix'
])
||
isset
(
$arguments
[
'suffix'
]))
)
{
throw
new
CLIException
(
'When clearing the query or metadata cache do not '
.
'specify any --id, --regex, --prefix or --suffix.'
);
}
return
true
;
}
/**
* @inheritdoc
*/
public
function
run
()
{
$arguments
=
$this
->
getArguments
();
$printer
=
$this
->
getPrinter
();
$query
=
isset
(
$arguments
[
'query'
]);
$result
=
isset
(
$arguments
[
'result'
]);
$metadata
=
isset
(
$arguments
[
'metadata'
]);
$id
=
isset
(
$arguments
[
'id'
])
?
$arguments
[
'id'
]
:
null
;
$regex
=
isset
(
$arguments
[
'regex'
])
?
$arguments
[
'regex'
]
:
null
;
$prefix
=
isset
(
$arguments
[
'prefix'
])
?
$arguments
[
'prefix'
]
:
null
;
$suffix
=
isset
(
$arguments
[
'suffix'
])
?
$arguments
[
'suffix'
]
:
null
;
$all
=
false
;
if
(
!
$query
&&
!
$result
&&
!
$metadata
)
{
$all
=
true
;
}
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
$configuration
=
$em
->
getConfiguration
();
if
(
$query
||
$all
)
{
$this
->
_doDelete
(
'query'
,
$configuration
->
getQueryCacheImpl
(),
$id
,
$regex
,
$prefix
,
$suffix
);
}
if
(
$result
||
$all
)
{
$this
->
_doDelete
(
'result'
,
$configuration
->
getResultCacheImpl
(),
$id
,
$regex
,
$prefix
,
$suffix
);
}
if
(
$metadata
||
$all
)
{
$this
->
_doDelete
(
'metadata'
,
$configuration
->
getMetadataCacheImpl
(),
$id
,
$regex
,
$prefix
,
$suffix
);
}
}
private
function
_doDelete
(
$type
,
$cacheDriver
,
$id
,
$regex
,
$prefix
,
$suffix
)
{
$printer
=
$this
->
getPrinter
();
if
(
!
$cacheDriver
)
{
throw
new
CLIException
(
'No driver has been configured for the '
.
$type
.
' cache.'
);
}
if
(
$id
)
{
$printer
->
writeln
(
'Clearing '
.
$type
.
' cache entries that match the id "'
.
$id
.
'".'
,
'INFO'
);
$deleted
=
$cacheDriver
->
delete
(
$id
);
if
(
is_array
(
$deleted
))
{
$this
->
_printDeleted
(
$type
,
$deleted
);
}
else
if
(
is_bool
(
$deleted
)
&&
$deleted
)
{
$this
->
_printDeleted
(
$type
,
array
(
$id
));
}
}
if
(
$regex
)
{
$printer
->
writeln
(
'Clearing '
.
$type
.
' cache entries that match the regular expression ".'
.
$regex
.
'"'
,
'INFO'
);
$this
->
_printDeleted
(
$type
,
$cacheDriver
->
deleteByRegex
(
'/'
.
$regex
.
'/'
));
}
if
(
$prefix
)
{
$printer
->
writeln
(
'Clearing '
.
$type
.
' cache entries that have the prefix "'
.
$prefix
.
'".'
,
'INFO'
);
$this
->
_printDeleted
(
$type
,
$cacheDriver
->
deleteByPrefix
(
$prefix
));
}
if
(
$suffix
)
{
$printer
->
writeln
(
'Clearing '
.
$type
.
' cache entries that have the suffix "'
.
$suffix
.
'".'
,
'INFO'
);
$this
->
_printDeleted
(
$type
,
$cacheDriver
->
deleteBySuffix
(
$suffix
));
}
if
(
!
$id
&&
!
$regex
&&
!
$prefix
&&
!
$suffix
)
{
$printer
->
writeln
(
'Clearing all '
.
$type
.
' cache entries.'
,
'INFO'
);
$this
->
_printDeleted
(
$type
,
$cacheDriver
->
deleteAll
());
}
}
private
function
_printDeleted
(
$type
,
array
$ids
)
{
$printer
=
$this
->
getPrinter
();
if
(
!
empty
(
$ids
))
{
foreach
(
$ids
as
$id
)
{
$printer
->
writeln
(
' - '
.
$id
);
}
}
else
{
throw
new
CLIException
(
'No '
.
$type
.
' cache entries found.'
);
}
$printer
->
write
(
PHP_EOL
);
}
}
\ No newline at end of file
lib/Doctrine/ORM/Tools/CLI/Tasks/ConvertDoctrine1SchemaTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\ORM\Tools\CLI\Tasks
;
use
Doctrine\Common\CLI\Tasks\AbstractTask
,
Doctrine\ORM\Tools\Export\ClassMetadataExporter
,
Doctrine\Common\CLI\CliException
,
Doctrine\Common\CLI\Option
,
Doctrine\Common\CLI\OptionGroup
,
Doctrine\ORM\Tools\ConvertDoctrine1Schema
,
Doctrine\ORM\Tools\EntityGenerator
;
/**
* CLI Task to convert a Doctrine 1 schema to a Doctrine 2 mapping file
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
ConvertDoctrine1SchemaTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
$options
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_N_N
,
array
(
new
Option
(
'from'
,
'<FROM>'
,
'The path to the Doctrine 1 schema.'
),
new
Option
(
'to'
,
'<TO>'
,
'The Doctrine 2 mapping format to convert to.'
),
new
Option
(
'dest'
,
'<DEST>'
,
'The path to export the converted schema.'
)
));
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'convert-10-schema'
)
->
setDescription
(
'Converts a Doctrine 1.X schema into a Doctrine 2.X schema.'
)
->
getOptionGroup
()
->
addOption
(
$options
);
}
/**
* @inheritdoc
*/
public
function
validate
()
{
$arguments
=
$this
->
getArguments
();
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
if
(
!
isset
(
$arguments
[
'from'
])
||
!
isset
(
$arguments
[
'to'
])
||
!
isset
(
$arguments
[
'dest'
]))
{
throw
new
CLIException
(
'You must specify a value for --from, --to and --dest'
);
}
return
true
;
}
public
function
run
()
{
$arguments
=
$this
->
getArguments
();
$printer
=
$this
->
getPrinter
();
$printer
->
writeln
(
sprintf
(
'Converting Doctrine 1 schema at "%s" to the "%s" format'
,
$printer
->
format
(
$arguments
[
'from'
],
'KEYWORD'
),
$printer
->
format
(
$arguments
[
'to'
],
'KEYWORD'
)
)
);
$cme
=
new
ClassMetadataExporter
();
$exporter
=
$cme
->
getExporter
(
$arguments
[
'to'
],
$arguments
[
'dest'
]);
if
(
$arguments
[
'to'
]
===
'annotation'
)
{
$entityGenerator
=
new
EntityGenerator
();
$exporter
->
setEntityGenerator
(
$entityGenerator
);
}
$converter
=
new
ConvertDoctrine1Schema
(
$arguments
[
'from'
]);
$metadatas
=
$converter
->
getMetadatas
();
foreach
(
$metadatas
as
$metadata
)
{
$printer
->
writeln
(
sprintf
(
'Processing entity "%s"'
,
$printer
->
format
(
$metadata
->
name
,
'KEYWORD'
))
);
}
$exporter
->
setMetadatas
(
$metadatas
);
$exporter
->
export
();
$printer
->
writeln
(
sprintf
(
'Writing Doctrine 2 mapping files to "%s"'
,
$printer
->
format
(
$arguments
[
'dest'
],
'KEYWORD'
)
)
);
}
}
\ No newline at end of file
lib/Doctrine/ORM/Tools/CLI/Tasks/ConvertMappingTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\ORM\Tools\CLI\Tasks
;
use
Doctrine\Common\CLI\Tasks\AbstractTask
,
Doctrine\Common\CLI\CliException
,
Doctrine\Common\CLI\Option
,
Doctrine\Common\CLI\OptionGroup
,
Doctrine\ORM\Tools\EntityGenerator
,
Doctrine\ORM\Tools\Export\ClassMetadataExporter
,
Doctrine\ORM\Mapping\Driver\DriverChain
,
Doctrine\ORM\Mapping\Driver\AnnotationDriver
,
Doctrine\ORM\Mapping\Driver\Driver
;
/**
* CLI Task to convert your mapping information between the various formats
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
ConvertMappingTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
$convertOptions
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_N_N
,
array
(
new
OptionGroup
(
OptionGroup
::
CARDINALITY_1_1
,
array
(
new
Option
(
'from'
,
'<SOURCE>'
,
'The path to the mapping information to convert from (yml, xml, php, annotation).'
),
new
Option
(
'from-database'
,
null
,
'Use this option if you wish to reverse engineer your database to a set of Doctrine mapping files.'
)
)),
new
Option
(
'to'
,
'<TYPE>'
,
'The format to convert to (yml, xml, php, annotation).'
),
new
Option
(
'dest'
,
'<PATH>'
,
'The path to write the converted mapping information.'
)
));
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'convert-mapping'
)
->
setDescription
(
'Convert mapping information between supported formats.'
)
->
getOptionGroup
()
->
addOption
(
$convertOptions
);
}
/**
* @inheritdoc
*/
public
function
validate
()
{
$arguments
=
$this
->
getArguments
();
if
(
isset
(
$arguments
[
'from-database'
])
&&
$arguments
[
'from-database'
])
{
$arguments
[
'from'
]
=
'database'
;
$this
->
setArguments
(
$arguments
);
}
if
(
!
(
isset
(
$arguments
[
'from'
])
&&
isset
(
$arguments
[
'to'
])
&&
isset
(
$arguments
[
'dest'
])))
{
throw
new
CLIException
(
'You must include a value for all three options: --from, --to and --dest.'
);
}
if
(
strtolower
(
$arguments
[
'to'
])
!=
'annotation'
&&
isset
(
$arguments
[
'extend'
]))
{
throw
new
CLIException
(
'You can only use the --extend argument when converting to annotations.'
);
}
if
(
strtolower
(
$arguments
[
'from'
])
==
'database'
)
{
// Check if we have an active EntityManager
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
if
(
$em
===
null
)
{
throw
new
CLIException
(
"Attribute 'em' of CLI Configuration is not defined or it is not a valid EntityManager."
);
}
$config
=
$em
->
getConfiguration
();
$config
->
setMetadataDriverImpl
(
new
\Doctrine\ORM\Mapping\Driver\DatabaseDriver
(
$em
->
getConnection
()
->
getSchemaManager
()
)
);
}
return
true
;
}
public
function
run
()
{
$arguments
=
$this
->
getArguments
();
$cme
=
new
ClassMetadataExporter
();
$cme
->
setEntityManager
(
$this
->
getConfiguration
()
->
getAttribute
(
'em'
));
$printer
=
$this
->
getPrinter
();
// Get exporter and configure it
$exporter
=
$cme
->
getExporter
(
$arguments
[
'to'
],
$arguments
[
'dest'
]);
if
(
$arguments
[
'to'
]
===
'annotation'
)
{
$entityGenerator
=
new
EntityGenerator
();
$exporter
->
setEntityGenerator
(
$entityGenerator
);
if
(
isset
(
$arguments
[
'extend'
])
&&
$arguments
[
'extend'
])
{
$entityGenerator
->
setClassToExtend
(
$arguments
[
'extend'
]);
}
if
(
isset
(
$arguments
[
'num-spaces'
])
&&
$arguments
[
'extend'
])
{
$entityGenerator
->
setNumSpaces
(
$arguments
[
'num-spaces'
]);
}
}
$from
=
(
array
)
$arguments
[
'from'
];
foreach
(
$from
as
$source
)
{
$cme
->
addMappingSource
(
$source
);
}
$metadatas
=
$cme
->
getMetadatas
();
foreach
(
$metadatas
as
$metadata
)
{
$printer
->
writeln
(
sprintf
(
'Processing entity "%s"'
,
$printer
->
format
(
$metadata
->
name
,
'KEYWORD'
))
);
}
$printer
->
writeln
(
''
);
$printer
->
writeln
(
sprintf
(
'Exporting "%s" mapping information to "%s"'
,
$printer
->
format
(
$arguments
[
'to'
],
'KEYWORD'
),
$printer
->
format
(
$arguments
[
'dest'
],
'KEYWORD'
)
)
);
$exporter
->
setMetadatas
(
$metadatas
);
$exporter
->
export
();
}
}
\ No newline at end of file
lib/Doctrine/ORM/Tools/CLI/Tasks/EnsureProductionSettingsTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\ORM\Tools\CLI\Tasks
;
use
Doctrine\Common\CLI\Tasks\AbstractTask
,
Doctrine\Common\CLI\CLIException
;
/**
* CLI Task to ensure that Doctrine is properly configured for a production environment.
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
EnsureProductionSettingsTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'ensure-production-settings'
)
->
setDescription
(
'Verify that Doctrine is properly configured for a production environment.'
);
}
/**
* @inheritdoc
*/
public
function
validate
()
{
// Check if we have an active EntityManager
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
if
(
$em
===
null
)
{
throw
new
CLIException
(
"Attribute 'em' of CLI Configuration is not defined or it is not a valid EntityManager."
);
}
return
true
;
}
/**
* @inheritdoc
*/
public
function
run
()
{
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
$em
->
getConfiguration
()
->
ensureProductionSettings
();
$this
->
getPrinter
()
->
writeln
(
'Environment is correctly configured for production.'
);
}
}
\ No newline at end of file
lib/Doctrine/ORM/Tools/CLI/Tasks/GenerateEntitiesTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\ORM\Tools\CLI\Tasks
;
use
Doctrine\Common\CLI\Tasks\AbstractTask
,
Doctrine\Common\CLI\Option
,
Doctrine\Common\CLI\OptionGroup
,
Doctrine\Common\CLI\CLIException
,
Doctrine\ORM\Tools\EntityGenerator
,
Doctrine\ORM\Tools\ClassMetadataReader
;
/**
* CLI Task to generate entity classes and method stubs from your mapping information.
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
GenerateEntitiesTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
$options
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_N_N
,
array
(
new
Option
(
'from'
,
'<FROM>'
,
'The path to mapping information.'
),
new
Option
(
'dest'
,
'<DEST>'
,
'The path to generate your entity classes.'
)
));
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'generate-entities'
)
->
setDescription
(
'Generate entity classes and method stubs from your mapping information.'
)
->
getOptionGroup
()
->
addOption
(
$options
);
}
/**
* @inheritdoc
*/
public
function
validate
()
{
$arguments
=
$this
->
getArguments
();
if
(
!
isset
(
$arguments
[
'from'
])
||
!
isset
(
$arguments
[
'dest'
]))
{
throw
new
CLIException
(
'You must specify a value for --from and --dest'
);
}
return
true
;
}
/**
* @inheritdoc
*/
public
function
run
()
{
$printer
=
$this
->
getPrinter
();
$arguments
=
$this
->
getArguments
();
$from
=
$arguments
[
'from'
];
$dest
=
realpath
(
$arguments
[
'dest'
]);
$entityGenerator
=
new
EntityGenerator
();
$entityGenerator
->
setGenerateAnnotations
(
false
);
$entityGenerator
->
setGenerateStubMethods
(
true
);
$entityGenerator
->
setRegenerateEntityIfExists
(
false
);
$entityGenerator
->
setUpdateEntityIfExists
(
true
);
if
(
isset
(
$arguments
[
'extend'
])
&&
$arguments
[
'extend'
])
{
$entityGenerator
->
setClassToExtend
(
$arguments
[
'extend'
]);
}
if
(
isset
(
$arguments
[
'num-spaces'
])
&&
$arguments
[
'extend'
])
{
$entityGenerator
->
setNumSpaces
(
$arguments
[
'num-spaces'
]);
}
$reader
=
new
ClassMetadataReader
();
$reader
->
setEntityManager
(
$this
->
getConfiguration
()
->
getAttribute
(
'em'
));
$reader
->
addMappingSource
(
$from
);
$metadatas
=
$reader
->
getMetadatas
();
foreach
(
$metadatas
as
$metadata
)
{
$printer
->
writeln
(
sprintf
(
'Processing entity "%s"'
,
$printer
->
format
(
$metadata
->
name
,
'KEYWORD'
))
);
}
$entityGenerator
->
generate
(
$metadatas
,
$dest
);
$printer
->
write
(
PHP_EOL
);
$printer
->
writeln
(
sprintf
(
'Entity classes generated to "%s"'
,
$printer
->
format
(
$dest
,
'KEYWORD'
)
)
);
}
}
\ No newline at end of file
lib/Doctrine/ORM/Tools/CLI/Tasks/GenerateProxiesTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
namespace
Doctrine\ORM\Tools\CLI\Tasks
;
use
Doctrine\Common\CLI\Tasks\AbstractTask
,
Doctrine\Common\CLI\CLIException
,
Doctrine\Common\CLI\Option
,
Doctrine\Common\CLI\OptionGroup
;
/**
* Task to (re)generate the proxy classes used by doctrine.
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision: 3938 $
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
GenerateProxiesTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
$classDir
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_1_1
,
array
(
new
Option
(
'class-dir'
,
'<PATH>'
,
'Specified directory where mapping classes are located.'
)
));
$toDir
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_0_1
,
array
(
new
Option
(
'to-dir'
,
'<PATH>'
,
'Generates the classes in the specified directory.'
)
));
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'generate-proxies'
)
->
setDescription
(
'Generates proxy classes for entity classes.'
)
->
getOptionGroup
()
->
addOption
(
$classDir
)
->
addOption
(
$toDir
);
}
/**
* @inheritdoc
*/
public
function
validate
()
{
$arguments
=
$this
->
getArguments
();
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
if
(
$em
===
null
)
{
throw
new
CLIException
(
"Attribute 'em' of CLI Configuration is not defined or it is not a valid EntityManager."
);
}
$metadataDriver
=
$em
->
getConfiguration
()
->
getMetadataDriverImpl
();
if
(
$metadataDriver
instanceof
\Doctrine\ORM\Mapping\Driver\AnnotationDriver
)
{
if
(
isset
(
$arguments
[
'class-dir'
]))
{
$metadataDriver
->
addPaths
((
array
)
$arguments
[
'class-dir'
]);
}
else
{
throw
new
CLIException
(
'The supplied configuration uses the annotation metadata driver. '
.
"The 'class-dir' argument is required for this driver."
);
}
}
return
true
;
}
/**
* @inheritdoc
*/
public
function
run
()
{
$arguments
=
$this
->
getArguments
();
$printer
=
$this
->
getPrinter
();
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
$cmf
=
$em
->
getMetadataFactory
();
$classes
=
$cmf
->
getAllMetadata
();
$factory
=
$em
->
getProxyFactory
();
if
(
empty
(
$classes
))
{
$printer
->
writeln
(
'No classes to process.'
,
'INFO'
);
}
else
{
foreach
(
$classes
as
$class
)
{
$printer
->
writeln
(
sprintf
(
'Processing entity "%s"'
,
$printer
->
format
(
$class
->
name
,
'KEYWORD'
))
);
}
$factory
->
generateProxyClasses
(
$classes
,
isset
(
$arguments
[
'to-dir'
])
?
$arguments
[
'to-dir'
]
:
null
);
$printer
->
writeln
(
''
);
$printer
->
writeln
(
sprintf
(
'Proxy classes generated to "%s"'
,
$printer
->
format
(
isset
(
$arguments
[
'to-dir'
])
?
$arguments
[
'to-dir'
]
:
$em
->
getConfiguration
()
->
getProxyDir
(),
'KEYWORD'
))
);
}
}
}
\ No newline at end of file
lib/Doctrine/ORM/Tools/CLI/Tasks/GenerateRepositoriesTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\ORM\Tools\CLI\Tasks
;
use
Doctrine\Common\CLI\Tasks\AbstractTask
,
Doctrine\Common\CLI\Option
,
Doctrine\Common\CLI\OptionGroup
,
Doctrine\Common\CLI\CLIException
,
Doctrine\ORM\Tools\ClassMetadataReader
;
/**
* CLI Task to generate repository classes for some mapping information
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
GenerateRepositoriesTask
extends
ConvertMappingTask
{
private
static
$_template
=
'<?php
namespace <namespace>;
use \Doctrine\ORM\EntityRepository;
/**
* <className>
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class <className> extends EntityRepository
{
}'
;
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
$options
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_N_N
,
array
(
new
Option
(
'from'
,
'<FROM>'
,
'The path to mapping information.'
),
new
Option
(
'dest'
,
'<DEST>'
,
'The path to generate your repository classes.'
)
));
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'generate-repositories'
)
->
setDescription
(
'Generate repository classes for some mapping information.'
)
->
getOptionGroup
()
->
addOption
(
$options
);
}
/**
* @inheritdoc
*/
public
function
validate
()
{
$arguments
=
$this
->
getArguments
();
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
if
(
!
isset
(
$arguments
[
'from'
])
||
!
isset
(
$arguments
[
'dest'
]))
{
throw
new
CLIException
(
'You must specify a value for --from and --dest'
);
}
return
true
;
}
public
function
run
()
{
$printer
=
$this
->
getPrinter
();
$arguments
=
$this
->
getArguments
();
$dest
=
realpath
(
$arguments
[
'dest'
]);
$reader
=
new
ClassMetadataReader
();
$reader
->
setEntityManager
(
$this
->
getConfiguration
()
->
getAttribute
(
'em'
));
$reader
->
addMappingSource
(
$arguments
[
'from'
]);
$metadatas
=
$reader
->
getMetadatas
();
foreach
(
$metadatas
as
$metadata
)
{
if
(
$metadata
->
customRepositoryClassName
)
{
$code
=
$this
->
_generateRepositoryClass
(
$metadata
->
customRepositoryClassName
);
$path
=
$dest
.
'/'
.
str_replace
(
'\\'
,
'/'
,
$metadata
->
customRepositoryClassName
)
.
'.php'
;
$dir
=
dirname
(
$path
);
if
(
!
is_dir
(
$dir
))
{
mkdir
(
$dir
,
0777
,
true
);
}
$printer
->
writeln
(
sprintf
(
'Processing entity "%s"'
,
$printer
->
format
(
$metadata
->
customRepositoryClassName
,
'KEYWORD'
)
)
);
file_put_contents
(
$path
,
$code
);
}
}
$printer
->
writeln
(
''
);
$printer
->
writeln
(
sprintf
(
'Entity repository classes generated to "%s"'
,
$printer
->
format
(
$dest
,
'KEYWORD'
)
)
);
}
private
function
_generateRepositoryClass
(
$fullyQualifiedClassName
)
{
$namespace
=
substr
(
$fullyQualifiedClassName
,
0
,
strrpos
(
$fullyQualifiedClassName
,
'\\'
));
$pos
=
strrpos
(
$fullyQualifiedClassName
,
'\\'
);
$className
=
substr
(
$fullyQualifiedClassName
,
$pos
+
1
,
strlen
(
$fullyQualifiedClassName
));
$placeHolders
=
array
(
'<namespace>'
,
'<className>'
);
$replacements
=
array
(
$namespace
,
$className
);
$code
=
str_replace
(
$placeHolders
,
$replacements
,
self
::
$_template
);
return
$code
;
}
}
\ No newline at end of file
lib/Doctrine/ORM/Tools/CLI/Tasks/RunDqlTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\ORM\Tools\CLI\Tasks
;
use
Doctrine\Common\CLI\Tasks\AbstractTask
,
Doctrine\Common\CLI\CLIException
,
Doctrine\Common\Util\Debug
,
Doctrine\Common\CLI\Option
,
Doctrine\Common\CLI\OptionGroup
,
Doctrine\ORM\Query
;
/**
* Task for executing DQL in passed EntityManager.
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
RunDqlTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
$dql
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_1_1
,
array
(
new
Option
(
'dql'
,
'<DQL>'
,
'The DQL to execute.'
)
));
$hydrate
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_0_1
,
array
(
new
Option
(
'hydrate'
,
'<HYDRATION_MODE>'
,
'Hydration mode of result set.'
.
PHP_EOL
.
'Should be either: object, array, scalar or single-scalar.'
)
));
$firstResult
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_0_1
,
array
(
new
Option
(
'first-result'
,
'<INTEGER>'
,
'The first result in the result set.'
)
));
$maxResults
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_0_1
,
array
(
new
Option
(
'max-results'
,
'<INTEGER>'
,
'The maximum number of results in the result set.'
)
));
$depth
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_0_1
,
array
(
new
Option
(
'depth'
,
'<DEPTH>'
,
'Dumping depth of Entities graph.'
)
));
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'run-dql'
)
->
setDescription
(
'Executes arbitrary DQL directly from the command line.'
)
->
getOptionGroup
()
->
addOption
(
$dql
)
->
addOption
(
$hydrate
)
->
addOption
(
$firstResult
)
->
addOption
(
$maxResults
)
->
addOption
(
$depth
);
}
/**
* @inheritdoc
*/
public
function
validate
()
{
$arguments
=
$this
->
getArguments
();
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
if
(
$em
===
null
)
{
throw
new
CLIException
(
"Attribute 'em' of CLI Configuration is not defined or it is not a valid EntityManager."
);
}
if
(
!
isset
(
$arguments
[
'dql'
]))
{
throw
new
CLIException
(
'Argument --dql must be defined.'
);
}
if
(
isset
(
$arguments
[
'hydrate'
]))
{
$hydrationModeName
=
'Doctrine\ORM\Query::HYDRATE_'
.
strtoupper
(
str_replace
(
'-'
,
'_'
,
$arguments
[
'hydrate'
]));
if
(
!
defined
(
$hydrationModeName
))
{
throw
new
CLIException
(
"Argument --hydrate must be either 'object', 'array', 'scalar' or 'single-scalar'."
);
}
}
if
(
isset
(
$arguments
[
'first-result'
])
&&
!
ctype_digit
(
$arguments
[
'first-result'
]))
{
throw
new
CLIException
(
'Argument --first-result must be an integer value.'
);
}
if
(
isset
(
$arguments
[
'max-results'
])
&&
!
ctype_digit
(
$arguments
[
'max-results'
]))
{
throw
new
CLIException
(
'Argument --max-results must be an integer value.'
);
}
return
true
;
}
/**
* @inheritdoc
*/
public
function
run
()
{
$arguments
=
$this
->
getArguments
();
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
$query
=
$em
->
createQuery
(
$arguments
[
'dql'
]);
$hydrationMode
=
isset
(
$arguments
[
'hydrate'
])
?
constant
(
'Doctrine\ORM\Query::HYDRATE_'
.
strtoupper
(
str_replace
(
'-'
,
'_'
,
$arguments
[
'hydrate'
])))
:
Query
::
HYDRATE_OBJECT
;
if
(
isset
(
$arguments
[
'first-result'
]))
{
$query
->
setFirstResult
(
$arguments
[
'first-result'
]);
}
if
(
isset
(
$arguments
[
'max-results'
]))
{
$query
->
setMaxResults
(
$arguments
[
'max-results'
]);
}
$resultSet
=
$query
->
getResult
(
$hydrationMode
);
$maxDepth
=
isset
(
$arguments
[
'depth'
])
?
$arguments
[
'depth'
]
:
7
;
Debug
::
dump
(
$resultSet
,
$maxDepth
);
}
}
\ No newline at end of file
lib/Doctrine/ORM/Tools/CLI/Tasks/SchemaToolTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
namespace
Doctrine\ORM\Tools\CLI\Tasks
;
use
Doctrine\Common\CLI\Tasks\AbstractTask
,
Doctrine\Common\CLI\CLIException
,
Doctrine\Common\CLI\Option
,
Doctrine\Common\CLI\OptionGroup
,
Doctrine\ORM\Tools\SchemaTool
,
Doctrine\Common\Annotations\AnnotationReader
,
Doctrine\ORM\Mapping\Driver\AnnotationDriver
,
Doctrine\ORM\Mapping\Driver\XmlDriver
,
Doctrine\ORM\Mapping\Driver\YamlDriver
;
/**
* Task to create the database schema for a set of classes based on their mappings.
*
* This task has the following arguments:
*
* <tt>--class-dir=<path></tt>
* Specifies the directory where to start looking for mapped classes.
* This argument is required when the annotation metadata driver is used,
* otherwise it has no effect.
*
* <tt>--dump-sql</tt>
* Specifies that instead of directly executing the SQL statements,
* they should be printed to the standard output.
*
* <tt>--create</tt>
* Specifies that the schema of the classes should be created.
*
* <tt>--drop</tt>
* Specifies that the schema of the classes should be dropped.
*
* <tt>--update</tt>
* Specifies that the schema of the classes should be updated.
*
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision: 3938 $
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
SchemaToolTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
$schemaOption
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_1_1
,
array
(
new
Option
(
'create'
,
null
,
'Creates the schema in EntityManager (create tables on Database).'
.
PHP_EOL
.
'If defined, --drop, --update and --re-create can not be requested on same task.'
),
new
Option
(
'drop'
,
null
,
'Drops the schema of EntityManager (drop tables on Database).'
.
PHP_EOL
.
'Beware that the complete database is dropped by this command, '
.
PHP_EOL
.
'even tables that are not relevant to your metadata model.'
.
PHP_EOL
.
'If defined, --create, --update and --re-create can not be requested on same task.'
),
new
Option
(
'update'
,
null
,
'Updates the schema in EntityManager (update tables on Database).'
.
PHP_EOL
.
'This command does a save update, which does not delete any tables, sequences or affected foreign keys.'
.
PHP_EOL
.
'If defined, --create, --drop and --complete-update --re-create can not be requested on same task.'
),
new
Option
(
'complete-update'
,
null
,
'Updates the schema in EntityManager (update tables on Database).'
.
PHP_EOL
.
'Beware that all assets of the database which are not relevant to the current metadata are dropped by this command.'
.
PHP_EOL
.
'If defined, --create, --drop and --update --re-create can not be requested on same task.'
),
new
Option
(
're-create'
,
null
,
'Runs --drop then --create to re-create the database.'
.
PHP_EOL
.
'If defined, --create, --update and --drop can not be requested on same task.'
)
));
$optionalOptions
=
new
OptionGroup
(
OptionGroup
::
CARDINALITY_0_N
,
array
(
new
Option
(
'dump-sql'
,
null
,
'Instead of try to apply generated SQLs into EntityManager, output them.'
),
new
Option
(
'class-dir'
,
'<PATH>'
,
'Optional class directory to fetch for Entities.'
)
));
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'schema-tool'
)
->
setDescription
(
'Processes the schema and either apply it directly on EntityManager or generate the SQL output.'
)
->
getOptionGroup
()
->
addOption
(
$schemaOption
)
->
addOption
(
$optionalOptions
);
}
/**
* @inheritdoc
*/
public
function
validate
()
{
$arguments
=
$this
->
getArguments
();
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
if
(
$em
===
null
)
{
throw
new
CLIException
(
"Attribute 'em' of CLI Configuration is not defined or it is not a valid EntityManager."
);
}
if
(
isset
(
$arguments
[
're-create'
]))
{
$arguments
[
'drop'
]
=
true
;
$arguments
[
'create'
]
=
true
;
unset
(
$arguments
[
're-create'
]);
$this
->
setArguments
(
$arguments
);
}
$isCreate
=
isset
(
$arguments
[
'create'
])
&&
$arguments
[
'create'
];
$isDrop
=
isset
(
$arguments
[
'drop'
])
&&
$arguments
[
'drop'
];
$isUpdate
=
isset
(
$arguments
[
'update'
])
&&
$arguments
[
'update'
];
$isCompleteUpdate
=
isset
(
$arguments
[
'complete-update'
])
&&
$arguments
[
'complete-update'
];
if
(
$isUpdate
&&
(
$isCreate
||
$isDrop
||
$isCompleteUpdate
))
{
throw
new
CLIException
(
'You cannot use --update with --create, --drop or --complete-update.'
);
}
if
(
$isCompleteUpdate
&&
(
$isCreate
||
$isDrop
||
$isUpdate
))
{
throw
new
CLIException
(
'You cannot use --complete-update with --create, --drop or --update.'
);
}
if
(
!
(
$isCreate
||
$isDrop
||
$isUpdate
||
$isCompleteUpdate
))
{
throw
new
CLIException
(
'You must specify at a minimum one of the options: '
.
'--create, --drop, --update, --re-create or --complete-update.'
);
}
$metadataDriver
=
$em
->
getConfiguration
()
->
getMetadataDriverImpl
();
if
(
$metadataDriver
instanceof
\Doctrine\ORM\Mapping\Driver\AnnotationDriver
)
{
if
(
isset
(
$arguments
[
'class-dir'
]))
{
$metadataDriver
->
addPaths
((
array
)
$arguments
[
'class-dir'
]);
}
else
{
throw
new
CLIException
(
'The supplied configuration uses the annotation metadata driver. '
.
"The 'class-dir' argument is required for this driver."
);
}
}
return
true
;
}
/**
* @inheritdoc
*/
public
function
run
()
{
$arguments
=
$this
->
getArguments
();
$printer
=
$this
->
getPrinter
();
$isCreate
=
isset
(
$arguments
[
'create'
])
&&
$arguments
[
'create'
];
$isDrop
=
isset
(
$arguments
[
'drop'
])
&&
$arguments
[
'drop'
];
$isUpdate
=
isset
(
$arguments
[
'update'
])
&&
$arguments
[
'update'
];
$isCompleteUpdate
=
isset
(
$arguments
[
'complete-update'
])
&&
$arguments
[
'complete-update'
];
$em
=
$this
->
getConfiguration
()
->
getAttribute
(
'em'
);
$cmf
=
$em
->
getMetadataFactory
();
$classes
=
$cmf
->
getAllMetadata
();
if
(
empty
(
$classes
))
{
$printer
->
writeln
(
'No classes to process.'
,
'INFO'
);
return
;
}
$tool
=
new
SchemaTool
(
$em
);
if
(
$isDrop
)
{
if
(
isset
(
$arguments
[
'dump-sql'
]))
{
foreach
(
$tool
->
getDropSchemaSql
(
$classes
)
as
$sql
)
{
$printer
->
writeln
(
$sql
.
";"
);
}
}
else
{
$printer
->
writeln
(
'Dropping database schema...'
,
'INFO'
);
$tool
->
dropSchema
(
$classes
);
$printer
->
writeln
(
'Database schema dropped successfully.'
,
'INFO'
);
}
}
if
(
$isCreate
)
{
if
(
isset
(
$arguments
[
'dump-sql'
]))
{
foreach
(
$tool
->
getCreateSchemaSql
(
$classes
)
as
$sql
)
{
$printer
->
writeln
(
$sql
.
";"
);
}
}
else
{
$printer
->
writeln
(
'Creating database schema...'
,
'INFO'
);
$tool
->
createSchema
(
$classes
);
$printer
->
writeln
(
'Database schema created successfully.'
,
'INFO'
);
}
}
if
(
$isUpdate
||
$isCompleteUpdate
)
{
$saveMode
=
$isUpdate
?
true
:
false
;
if
(
isset
(
$arguments
[
'dump-sql'
]))
{
foreach
(
$tool
->
getUpdateSchemaSql
(
$classes
,
$saveMode
)
as
$sql
)
{
$printer
->
writeln
(
$sql
.
";"
);
}
}
else
{
$printer
->
writeln
(
'Updating database schema...'
,
'INFO'
);
$tool
->
updateSchema
(
$classes
,
$saveMode
);
$printer
->
writeln
(
'Database schema updated successfully.'
,
'INFO'
);
}
}
}
}
\ No newline at end of file
lib/Doctrine/ORM/Tools/CLI/Tasks/VersionTask.php
deleted
100644 → 0
View file @
5381e3d5
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\ORM\Tools\CLI\Tasks
;
use
Doctrine\Common\CLI\Tasks\AbstractTask
,
Doctrine\Common\Version
;
/**
* CLI Task to display the doctrine version
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 2.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
* @author Guilherme Blanco <guilhermeblanco@hotmail.com>
* @author Jonathan Wage <jonwage@gmail.com>
* @author Roman Borschel <roman@code-factory.org>
*/
class
VersionTask
extends
AbstractTask
{
/**
* @inheritdoc
*/
public
function
buildDocumentation
()
{
// There're no options on this task
$this
->
getDocumentation
()
->
getOptionGroup
()
->
clear
();
$doc
=
$this
->
getDocumentation
();
$doc
->
setName
(
'version'
)
->
setDescription
(
'Displays the current installed Doctrine version.'
);
}
/**
* Displays the current version of Doctrine
*
*/
public
function
run
()
{
$this
->
getPrinter
()
->
writeln
(
'You are currently running Doctrine '
.
Version
::
VERSION
,
'INFO'
);
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment