mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-18 17:21:26 +08:00
more on console apps
This commit is contained in:
@ -132,7 +132,7 @@ class Application extends \yii\base\Application
|
||||
'help' => 'yii\console\controllers\HelpController',
|
||||
'migrate' => 'yii\console\controllers\MigrateController',
|
||||
'shell' => 'yii\console\controllers\ShellController',
|
||||
'app' => 'yii\console\controllers\AppController',
|
||||
'create' => 'yii\console\controllers\CreateController',
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -60,4 +60,56 @@ class Controller extends \yii\base\Controller
|
||||
\Yii::$application->end(1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads input via the readline PHP extension if that's available, or fgets() if readline is not installed.
|
||||
*
|
||||
* @param string $message to echo out before waiting for user input
|
||||
* @param string $default the default string to be returned when user does not write anything.
|
||||
* Defaults to null, means that default string is disabled.
|
||||
* @return mixed line read as a string, or false if input has been closed
|
||||
*/
|
||||
public function prompt($message, $default = null)
|
||||
{
|
||||
if($default !== null) {
|
||||
$message .= " [$default] ";
|
||||
}
|
||||
else {
|
||||
$message .= ' ';
|
||||
}
|
||||
|
||||
if(extension_loaded('readline')) {
|
||||
$input = readline($message);
|
||||
if($input !== false) {
|
||||
readline_add_history($input);
|
||||
}
|
||||
}
|
||||
else {
|
||||
echo $message;
|
||||
$input = fgets(STDIN);
|
||||
}
|
||||
|
||||
if($input === false) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
$input = trim($input);
|
||||
return ($input === '' && $default !== null) ? $default : $input;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asks user to confirm by typing y or n.
|
||||
*
|
||||
* @param string $message to echo out before waiting for user input
|
||||
* @param boolean $default this value is returned if no selection is made.
|
||||
* @return boolean whether user confirmed
|
||||
*/
|
||||
public function confirm($message, $default = false)
|
||||
{
|
||||
echo $message . ' (yes|no) [' . ($default ? 'yes' : 'no') . ']:';
|
||||
|
||||
$input = trim(fgets(STDIN));
|
||||
return empty($input) ? $default : !strncasecmp($input, 'y', 1);
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* WebAppCommand class file.
|
||||
* CreateController class file.
|
||||
*
|
||||
* @author Qiang Xue <qiang.xue@gmail.com>
|
||||
* @link http://www.yiiframework.com/
|
||||
@ -18,21 +18,23 @@ use yii\console\Controller;
|
||||
* @author Qiang Xue <qiang.xue@gmail.com>
|
||||
* @since 2.0
|
||||
*/
|
||||
class AppController extends Controller
|
||||
class CreateController extends Controller
|
||||
{
|
||||
private $_rootPath;
|
||||
|
||||
/**
|
||||
* Generates Yii application at the path specified via appPath parameter.
|
||||
*
|
||||
* @param string $appPath the directory where the new application will be created.
|
||||
* @param string $path the directory where the new application will be created.
|
||||
* If the directory does not exist, it will be created. After the application
|
||||
* is created, please make sure the directory has enough permissions.
|
||||
* @param string $type application type. If not specified default application
|
||||
* skeleton will be used.
|
||||
* @return integer the exit status
|
||||
*/
|
||||
public function actionIndex($appPath)
|
||||
public function actionIndex($path, $type = 'default')
|
||||
{
|
||||
$path=strtr($appPath,'/\\',DIRECTORY_SEPARATOR);
|
||||
$path=strtr($path,'/\\',DIRECTORY_SEPARATOR);
|
||||
if(strpos($path,DIRECTORY_SEPARATOR)===false)
|
||||
$path='.'.DIRECTORY_SEPARATOR.$path;
|
||||
$dir=rtrim(realpath(dirname($path)),'\\/');
|
||||
@ -42,11 +44,11 @@ class AppController extends Controller
|
||||
$this->_rootPath=$path=$dir;
|
||||
else
|
||||
$this->_rootPath=$path=$dir.DIRECTORY_SEPARATOR.basename($path);
|
||||
if($this->confirm("Create a Web application under '$path'?"))
|
||||
if($this->confirm("Create \"$type\" application under '$path'?"))
|
||||
{
|
||||
$sourceDir=realpath(dirname(__FILE__).'/../views/webapp');
|
||||
$sourceDir=realpath(__DIR__.'/../create/'.$type);
|
||||
if($sourceDir===false)
|
||||
die("\nUnable to locate the source directory.\n");
|
||||
die("\nUnable to locate the source directory for \"$type\".\n");
|
||||
$list=$this->buildFileList($sourceDir,$path);
|
||||
$list['index.php']['callback']=array($this,'generateIndex');
|
||||
$list['index-test.php']['callback']=array($this,'generateIndex');
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* MessageCommand class file.
|
||||
* MessageController class file.
|
||||
*
|
||||
* @author Qiang Xue <qiang.xue@gmail.com>
|
||||
* @link http://www.yiiframework.com/
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* MigrateCommand class file.
|
||||
* MigrateController class file.
|
||||
*
|
||||
* @author Qiang Xue <qiang.xue@gmail.com>
|
||||
* @link http://www.yiiframework.com/
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* ShellCommand class file.
|
||||
* ShellController class file.
|
||||
*
|
||||
* @author Qiang Xue <qiang.xue@gmail.com>
|
||||
* @link http://www.yiiframework.com/
|
||||
@ -13,7 +13,7 @@ namespace yii\console\controllers;
|
||||
use yii\console\Controller;
|
||||
|
||||
/**
|
||||
* ShellCommand executes the specified Web application and provides a shell for interaction.
|
||||
* This command executes the specified Web application and provides a shell for interaction.
|
||||
*
|
||||
* @property string $help The help information for the shell command.
|
||||
*
|
||||
|
1
framework/console/create/default/index.php
Normal file
1
framework/console/create/default/index.php
Normal file
@ -0,0 +1 @@
|
||||
<?php
|
Reference in New Issue
Block a user