private function defineDeployVars()
    {
        $vars   = [];
        $vars[] = [
            'key'      => 'ENVIRONMENT',
            'label'    => 'Environment',
            'value'    => Environment::get() ?: Environment::ENV_DEV,
            'options'  => Environment::available(),
            'callback' => function ($sInput) {
                return trim(strtoupper($sInput));
            },
        ];

        $vars[] = [
            'key'      => 'BASE_URL',
            'label'    => 'Base URL',
            'value'    => defined('BASE_URL') ? BASE_URL : '',
            'callback' => function ($sInput) {
                return trim(rtrim($sInput, '/') . '/');
            },
        ];

        $vars[] = [
            'key'   => 'DEPLOY_PRIVATE_KEY',
            'label' => 'Deployment Private Key',
            'value' => defined('DEPLOY_PRIVATE_KEY') ? DEPLOY_PRIVATE_KEY : md5(rand(0, 1000) . microtime(true)),
        ];

        $vars[] = [
            'key'   => 'DEPLOY_DB_HOST',
            'label' => 'Database Host',
            'value' => defined('DEPLOY_DB_HOST') ? DEPLOY_DB_HOST : 'localhost',
        ];

        $vars[] = [
            'key'   => 'DEPLOY_DB_USERNAME',
            'label' => 'Database User',
            'value' => defined('DEPLOY_DB_USERNAME') ? DEPLOY_DB_USERNAME : '',
        ];

        $vars[] = [
            'key'   => 'DEPLOY_DB_PASSWORD',
            'label' => 'Database Password',
            'value' => defined('DEPLOY_DB_PASSWORD') ? DEPLOY_DB_PASSWORD : '',
        ];

        $vars[] = [
            'key'   => 'DEPLOY_DB_DATABASE',
            'label' => 'Database Name',
            'value' => defined('DEPLOY_DB_DATABASE') ? DEPLOY_DB_DATABASE : '',
        ];

        $vars[] = [
            'key'   => 'DEPLOY_EMAIL_HOST',
            'label' => 'Email Host',
            'value' => defined('DEPLOY_EMAIL_HOST') ? DEPLOY_EMAIL_HOST : 'localhost',
        ];

        $vars[] = [
            'key'   => 'DEPLOY_EMAIL_USER',
            'label' => 'Email Username',
            'value' => defined('DEPLOY_EMAIL_USER') ? DEPLOY_EMAIL_USER : '',
        ];

        $vars[] = [
            'key'   => 'DEPLOY_EMAIL_PASS',
            'label' => 'Email Password',
            'value' => defined('DEPLOY_EMAIL_PASS') ? DEPLOY_EMAIL_PASS : '',
        ];

        $vars[] = [
            'key'   => 'DEPLOY_EMAIL_PORT',
            'label' => 'Email Port',
            'value' => defined('DEPLOY_EMAIL_PORT') ? DEPLOY_EMAIL_PORT : 25,
        ];

        // --------------------------------------------------------------------------

        //  Any constants defined by the components?
        $componentVars = $this->getConstantsFromComponents('DEPLOY', $vars);
        $vars          = array_merge($vars, array_filter($componentVars));

        // --------------------------------------------------------------------------

        //  Any other constants defined in deploy.php?
        $appFile = $this->getConstantsFromFile('config/deploy.php', $vars);
        $vars    = array_merge($vars, array_filter($appFile));

        // --------------------------------------------------------------------------

        return $vars;
    }