nexusnetsoftgmbh / nexuscli
此软件包已被 放弃 并不再维护。未建议替代软件包。
3.1.0
2019-04-08 07:37 UTC
Requires
- php: >=7.1.0
- symfony/finder: ^4.1.1
- xervice/core: ^4.0.0
- xervice/data-provider: ^2.0.0
Requires (Dev)
README
安装
composer global require nexusnetsoftgmbh/nexuscli
配置
要在您的Docker项目中使用它,您必须在根路径下创建一个“config”目录。在那里,您必须放置一个“config_default.php”文件,其内容如下
<?php use Nexus\CustomCommand\CustomCommandConfig; use Nexus\Dumper\DumperConfig; use Xervice\Core\CoreConfig; use Xervice\DataProvider\DataProviderConfig; $config[CoreConfig::PROJECT_NAMESPACES] = [ 'Nexus', 'Project' ]; $config[DataProviderConfig::DATA_PROVIDER_GENERATED_PATH] = dirname(__DIR__) . '/_Generated'; $config[DataProviderConfig::DATA_PROVIDER_PATHS] = [ dirname(__DIR__) . '/src/Nexus/*/Schema/', dirname(__DIR__) . '/vendor/xervice/*/src/Xervice/*/Schema/', dirname(__DIR__) . '/vendor/nexusnetsoftgmbh/*/src/*/*/Schema/' ]; $config[DumperConfig::SSH_HOST] = '5.9.82.139'; $config[DumperConfig::SSH_USER] = 'nxsdocker'; $config[DumperConfig::PROJECT_NAME] = 'myproject'; $config[DumperConfig::IMAGE_NAME] = 'nxs-docker-dumper'; $config[DumperConfig::DUMP_DIRECTORY] = dirname(__DIR__) . '/dump'; $config[CustomCommandConfig::COMMAND_PATH] = dirname(__DIR__) . '/nxscli/commands';
DataProvider (DTO)
NEXUS CLI 使用 dataprovider 类来传输信息。为此,您必须在项目目录中 composer.json 文件旁边创建一个“_Generated”目录。如果您想使用另一个目录,您必须更改 config_default.php 中的目录路径以及在 composer.json 文件中的自动加载配置。
在使用 NEXUS CLI 之前,您必须生成 dataprovider。为此,您可以使用以下命令
vendor/bin/nxscli dataprovider:generate
用法
您必须在项目根目录中运行 nxscli 命令。这是您创建“config”目录的同一目录。
nxscli <command>
扩展
您可以创建自己的 nxscli。为此,您必须在项目根目录中创建一个“composer.json”文件。
{ "require-dev": { "codeception/codeception": "*", "symfony/var-dumper": "*" }, "require": { "php": ">=7.1.0", "nexusnetsoftgmbh/nexuscli": "dev-master" }, "autoload": { "psr-4": { "NexusTest\\": "tests/Nexus/", "DataProvider\\": "_Generated/" }, "psr-0": { "Nexus\\": "src/" } } }
之后,您可以在那里创建一个 src 目录,并在其中开发自己的 Nexus-模块。您还可以从 composer 中扩展您的命令。为此,您可以要求额外的命令集用于 nexuscli。
自定义命令
如果您想添加自己的命令,您可以为自定义命令配置一个目录。命令文件名必须以“Command.php”结尾,并且您的命令类必须与您的文件名相同。您还可以为您的命令创建子目录以对它们进行分组。命名空间始终必须是“Nexus\CustomCommand\Command”。
示例自定义命令 'LsCommand.php'
<?php namespace Nexus\CustomCommand\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Xervice\Console\Business\Model\Command\AbstractCommand; class LsCommand extends AbstractCommand { protected function configure() { $this->setName('custom:ls') ->setDescription('List all files') ->addArgument('path', InputArgument::OPTIONAL, "Path for listing files", './'); } /** * @param \Symfony\Component\Console\Input\InputInterface $input * @param \Symfony\Component\Console\Output\OutputInterface $output * * @return int|null|void * @throws \Core\Locator\Dynamic\ServiceNotParseable */ protected function execute(InputInterface $input, OutputInterface $output) { $command = sprintf( 'ls %s', $input->getArgument('path') ); $output->writeln( $this->getFacade()->runShell($command) ); } }