zyos / install-bundle
Symfony 的命令执行自动化流程
Requires
- php: >=8.0
- symfony/console: *
- symfony/filesystem: *
- symfony/process: *
README
此项目提供了一系列流程,可以帮助您系统化项目中的一些过程。
安装包提供了一系列可以配置的命令
- 运行原生或自定义的 symfony 命令
- 执行目录创建、符号链接和镜像
- 运行服务器操作系统的命令(CLI)
- 以自定义方式验证路径目录和文件
要求
PHP 版本 >= 8.0 & Symfony >=5.0
所有这些流程都使用 symfony 组件:Console、Filesystem 和 Process
安装
composer require zyos/install-bundle
如果您不使用 flex(您应该使用),则需要手动启用该包
// config/bundles.php return [ /** ... **/ Zyos\InstallBundle\InstallBundle::class => ['all' => true], ];
必须在路径中创建配置文件
config/packages/zyos_install.yaml
设置
这些是您需要输入以正常运行的必要基本配置。
环境
不同 Install Bundle 命令可以执行的环境。
如果此参数未指定,则默认生成 "prod"。
这些环境不受 Symfony .env 文件的限制,在这种情况下,您可以创建自定义环境,并按您偏好的顺序运行它们。
zyos_install: environments: ['dev', 'prod', 'test']
锁
可以在某些环境中生成执行锁,在这种情况下将生成 lock.lock 文件,这将生成相应的锁,此锁仅在执行 zyos:install 命令时生成。
如果此参数未指定,则默认生成 "prod"。
zyos_install: locks: ['prod', 'staging']
锁文件直接在 symfony 项目 src/Resources/zyos-install-bundle/lock.lock 中创建
您必须确保此目录已创建
安装
此命令仅执行和专属 symfony 命令,可以是自定义的或任何类型的 symfony 内部命令。
zyos_install: install: - command: 'app:command' arguments: {'argument': 'hello world', '--option': true} enable: true environments: [ 'prod', 'dev' ] priority: 1 if_error: 'stop'
- command: (string) 要执行的命令。
- arguments: (array) 包含键值对的数组,这些键值对对于命令是必要的。
- enable: (boolean) 在执行时启用或禁用命令。
- environments: (array) 命令将在其中执行的环境。
- priority: (integer) 这是命令执行的优先级,(正值) 数字越高,优先级越低,(负数) 数字越高,优先级越高。
- if_error: (enum:[none, stop]) 如果发生错误,此字段将限制命令的操作,命令(CLI)返回 3 个退出代码:成功:0,失败:1,无效:2。在这种情况下,错误情况下有两个值:1 和 2,命令可以停止,并且配置的后续命令不会执行,在这种情况下使用值:"stop",如果发生错误,但后续命令的执行过程没有停止,则使用值:"none"。
用法
php bin/console zyos:install php bin/console zyos:install <environment> php bin/console zyos:install dev php bin/console zyos:install --show-output prod
Usage:
zyos:install [options] [--] [<environment>]
Arguments:
environment: Runtime environment [default: "dev"]
Options:
--show-output: Show command output
文件系统
此命令使用 Filesystem 组件,您可以使用它创建目录、符号链接和镜像目录和文件,此过程用于创建项目结构。
zyos_install: filesystem: - source: '%kernel.project_dir%/public/test' destination: '%kernel.project_dir%/public/test' environments: [ 'prod', 'dev' ] type: directory priority: 3 if_error: 'stop'
- source: (string) 目录和/或文件的源路径。
- destination: (string) 目录和/或文件的目标路径。
- environments: (array) 命令将在其中执行的环境。
- type: (enum:[directory, symlink, mirror]) 创建类型。
- priority: (integer) 这是命令执行的优先级,(正值) 数字越高,优先级越低,(负数) 数字越高,优先级越高。
- if_error: (enum:[none, stop]) 如果发生错误,此字段将限制命令的操作,命令(CLI)返回 3 个退出代码:成功:0,失败:1,无效:2。在这种情况下,错误情况下有两个值:1 和 2,命令可以停止,并且配置的后续命令不会执行,在这种情况下使用值:"stop",如果发生错误,但后续命令的执行过程没有停止,则使用值:"none"。
注意:当类型为 "directory" 时,"source" 和 "destination" 必须相同,以避免创建问题。
用法
php bin/console zyos:filesystem php bin/console zyos:filesystem <environment> php bin/console zyos:filesystem dev # create directory, symlink and mirror php bin/console zyos:filesystem --show-output prod php bin/console zyos:filesystem --mirror prod # only mirror creation php bin/console zyos:filesystem --symlink prod # only symlink creation php bin/console zyos:filesystem --directory prod # only directory creation php bin/console zyos:filesystem --mirror --symlink prod # only mirror and symlink creation
Usage:
zyos:filesystem [options] [--] [<environment>]
Arguments:
environment Runtime environment [default: "dev"]
Options:
--mirror Run only directory mirroring
--symlink Run only create symlink
--directory Run directory creation only
--show-output Show command output
CLI
此命令使用 symfony 组件 "Process",它直接在应用程序所在的操作系统中执行命令。
zyos_install: cli: - command: ['mkdir', '-p', '/app/public/test3'] environments: ['prod', 'dev'] enable: true if_error: 'stop'
- command: (array) 要执行的命令。此命令遵循 Process 组件的规则。
- environments: (array) 命令将在其中执行的环境。
- priority: (integer) 这是命令执行的优先级,(正值) 数字越高,优先级越低,(负数) 数字越高,优先级越高。
- if_error: (enum:[none, stop]) 如果发生错误,此字段将限制命令的操作,命令(CLI)返回 3 个退出代码:成功:0,失败:1,无效:2。在这种情况下,错误情况下有两个值:1 和 2,命令可以停止,并且配置的后续命令不会执行,在这种情况下使用值:"stop",如果发生错误,但后续命令的执行过程没有停止,则使用值:"none"。
用法
php bin/console zyos:cli php bin/console zyos:cli <environment> php bin/console zyos:cli dev php bin/console zyos:cli --show-output prod
Usage:
zyos:cli [options] [--] [<environment>]
Arguments:
environment: Runtime environment [default: "dev"]
Options:
--show-output Show command output
验证
此命令生成目录和为每个环境配置的文件的基本验证,这些验证将显示为成功或失败,在这种情况下,在命令级别(CLI)的退出代码为成功:0,失败:1。
在此过程中没有执行限制,其他命令可能具有的块不会生成,但每个验证失败的配置也可以观察。
zyos_install: validate: - filepath: '%kernel.project_dir%/public/img' type: directory environments: ['prod', 'dev', 'test'] enable: true validations: - exists - is_dir
- filepath: (字符串) 目录和/或文件源路径。
- type: (枚举:[目录, 文件]) filepath的类型。
- environments: (array) 命令将在其中执行的环境。
- enable: (布尔值) 启用或禁用命令。
- validations: (数组) 要执行的验证。
验证
- exists: 如果文件或目录存在。
- is_dir: 如果文件或目录是目录。
- is_file: 如果文件或目录是文件。
- is_executable: 如果文件或目录是可执行文件。
- is_symlink: 如果文件或目录是符号链接。
- is_writable: 如果文件或目录是可写的。
- is_readable: 如果文件或目录是可读的。
用法
php bin/console zyos:validate php bin/console zyos:validate <environment> php bin/console zyos:validate dev php bin/console zyos:cli --only-errors prod
Usage:
zyos:validate [options] [--] [<environment>]
Arguments:
environment: Runtime environment [default: "dev"]
Options:
--only-errors only show errors