/**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array(new sfCommandArgument('command', sfCommandArgument::REQUIRED, 'update, drop or init')));
        $this->addOptions(array(new sfCommandOption('application', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', null), new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'propel'), new sfCommandOption('ignore-working-tree-changes', null, sfCommandOption::PARAMETER_OPTIONAL, 'Attempts to perform updates regardless of whether there are changes in the working tree.', false)));
        $this->name = 'update-database';
        $this->briefDescription = 'Updates this environment\'s database.';
        $this->detailedDescription = <<<EOF
Updates this environment\\'s database to the latest build in the build sequence.
EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array());
        $this->addOptions(array(new sfCommandOption('application', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', 'api'), new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'propel')));
        $this->name = 'initialize-crons';
        $this->aliases = array('altumo:crons');
        $this->briefDescription = 'Initializes scheduled tasks';
        $this->detailedDescription = <<<EOF
EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array(new sfCommandArgument('hash', sfCommandArgument::REQUIRED, 'hash of the script to apply, or "new" to test uncommitted data_update.')));
        $this->addOptions(array(new sfCommandOption('application', null, sfCommandOption::PARAMETER_OPTIONAL, 'The application name', null), new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'), new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'propel')));
        $this->name = 'apply-data-update';
        $this->briefDescription = 'Applies a single data_update to the database. (Do not run manually)';
        $this->detailedDescription = <<<EOF
Applies a single data_update to the database. (Do not run manually)
EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array(new sfCommandArgument('hook-name', sfCommandArgument::REQUIRED, 'The git hook name ("install" to install hooks).')));
        $this->addOptions(array());
        $this->name = 'git-hook-handler';
        $this->briefDescription = 'Calls the altumo git hook handler or installs the git hooks.';
        $this->detailedDescription = <<<EOF
Calls the altumo git hook handler. Alternatively, installs the git hooks within git if hook-name is "install".
EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array());
        $this->addOptions(array());
        $this->name = 'test';
        $this->briefDescription = 'Runs all of the unit tests for this application.';
        $this->detailedDescription = <<<EOF
Runs the sfAltumoPlugin tests and the project-specific tests.

EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array());
        $this->addOptions(array());
        $this->name = 'test-environment';
        $this->briefDescription = 'Tests for the required dependencies of this environment.';
        $this->detailedDescription = <<<EOF
Test for things like PHP 5.3, PDO, Python, etc.

EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array());
        $this->addOptions(array(new sfCommandOption('output_file', null, sfCommandOption::PARAMETER_OPTIONAL, 'The path of the target Javascript file', null)));
        $this->name = 'build-javascript-dependencies';
        $this->aliases = array($this->namespace . ':jsdeps');
        $this->briefDescription = 'Generates a Javascript dependencies file for the entire application';
        $this->detailedDescription = <<<EOF
Temporarily deprecated.
EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array());
        $this->addOptions(array());
        $this->name = 'build';
        $this->briefDescription = 'Compiles the website into a more executable form (a build).';
        $this->detailedDescription = <<<EOF
Compiles the website into a more executable form (a build):
 - all propel builds
 - closure's javascript dependencies builder 

EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array(new sfCommandArgument('bare-database-target', sfCommandArgument::OPTIONAL, 'Specify a custom name to load the bare database onto.', null)));
        $this->addOptions(array());
        $this->name = 'load-bare-database';
        $this->briefDescription = 'Loads a blank copy of the schema that Propel would generate onto the database.';
        $this->detailedDescription = <<<EOF
It first uses Propel's tasks to create SQL files for the application and plugin schemas. It then loads these sql files onto a database by the same name as the one used by the project but with "_bare" appended to it.

The resulting database is intended for reference use only. For example, to do a schema comparisson (using a diff tool like Toad for MySQL) between the current application database and a bare database after making some schema changes.

** If a database by the same name exists, it will be replaced **
EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array());
        $this->addOptions(array());
        $this->name = 'update-environment';
        $this->aliases = array($this->namespace . ':update');
        $this->briefDescription = 'Updates the application environment.';
        $this->detailedDescription = <<<EOF
Updating existing separate environments (production, staging, dev) requires many
steps.

This script pulls from the default remote, updates the database (or applies 
deltas) and clears the project cache.
EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array());
        $this->addOptions(array());
        $this->name = 'show-inheritance-map';
        //$this->aliases = array( $this->namespace. ':cs' );
        $this->briefDescription = 'Shows a list of tables being inherited via concrete inheritance. (Read Only)';
        $this->detailedDescription = <<<EOF
    
Prints out a list of tables being extended via concrete inheritance. This is based
on schema.base.xml (both sfAltumoPlugin's and the app's).

This operation is read-only and it is for information purposes only.
EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array());
        /*
        $this->addOptions(array(
            new sfCommandOption( 'database-host', null, sfCommandOption::PARAMETER_REQUIRED, 'The hostname of the MySQL database.', 'localhost' ),
        ));
        */
        //./symfony altumo:install localhost my_db_user my_db_password my_database my.dev.domain.com dev_ssperandeo
        $this->name = 'install-plugin';
        $this->briefDescription = 'Installs sfAltumoPlugin into an existing symfony 1.4 / propel 1.6 application.';
        $this->detailedDescription = <<<EOF
Sets up all the things necessary to get sfAltumoPlugin installed:
 - creates the database folders
EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array());
        $this->addOptions(array());
        $this->name = 'connect-to-database';
        $this->aliases = array($this->namespace . ':db');
        $this->briefDescription = 'Connects to this environment\'s database using the native mysql client.';
        $database_dir = sfConfig::get('sf_data_dir');
        $default_updater_configuration_file = $database_dir . '/updater-configuration.xml';
        $this->detailedDescription = <<<EOF
Connects to this environment\\'s database using the native mysql client. It uses
the host, credentials and database from the database updater.

See: {$default_updater_configuration_file}
EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array());
        $this->addOptions(array(new sfCommandOption('output_file', null, sfCommandOption::PARAMETER_OPTIONAL, 'The path of the target Javascript file', null)));
        $this->name = 'build-javascript-dependencies';
        $this->aliases = array($this->namespace . ':jsdeps');
        $this->briefDescription = 'Generates a Javascript dependencies file for the entire application';
        $this->detailedDescription = <<<EOF
During development, it is very inconvenient to compile Javascripts every time a change is made to one of them.

In order for the require() (provided by Google Closure) to work, it needs to know what path to include
scripts from and what dependencies each provides.

This task uses Closure's DepsWriter to generate a "deps file" which maps paths to dependencies.

** This task must be executed every time a new javascript file is added to the assets folder **
EOF;
    }
    /**
     * @see sfTask
     */
    protected function configure()
    {
        parent::configure();
        $this->addArguments(array(new sfCommandArgument('database-host', sfCommandArgument::REQUIRED, 'The hostname of the MySQL database.'), new sfCommandArgument('database-user', sfCommandArgument::REQUIRED, 'The username of the MySQL user that will be used by this application.'), new sfCommandArgument('database-password', sfCommandArgument::REQUIRED, 'The password of the MySQL user that will be used by this application.'), new sfCommandArgument('database', sfCommandArgument::REQUIRED, 'The name of the MySQL database that will be used by this application.'), new sfCommandArgument('domain', sfCommandArgument::REQUIRED, 'The domain name (including subdomain) of this application.'), new sfCommandArgument('environment', sfCommandArgument::REQUIRED, 'This Symfony environment of this environment (eg. dev_username, production, testing)')));
        /*
        $this->addOptions(array(
            new sfCommandOption( 'database-host', null, sfCommandOption::PARAMETER_REQUIRED, 'The hostname of the MySQL database.', 'localhost' ),
        ));
        */
        //./symfony altumo:install localhost my_db_user my_db_password my_database my.dev.domain.com dev_ssperandeo
        $this->name = 'install';
        $this->briefDescription = 'Sets up all the things necessary to get this website running.';
        $this->detailedDescription = <<<EOF
Sets up all the things necessary to get this website running:
 - untemplates the templated files
 - installs the database credentials and project path in the necessary config
   files
 - provides a sample vhost to install
 - fixes the file and directory permissions
 - clears the cache
 - setup the database builder
 - installs the githooks
EOF;
    }