oat-sa / tao-dependency-resolver
解决 TAO 扩展依赖问题
Requires
- php: ^7.1.3
- ext-ctype: *
- ext-iconv: *
- ext-json: *
- knplabs/github-api: ^2.11
- knplabs/packagist-api: ^1.5
- league/flysystem: ^1.0
- mikey179/vfsstream: ^1.6
- nikic/php-parser: ^4.2
- php-http/guzzle6-adapter: ^1.1
- symfony/console: 4.2.*
- symfony/dotenv: 4.2.*
- symfony/expression-language: 4.2.*
- symfony/flex: ^1.1
- symfony/framework-bundle: 4.2.*
- symfony/monolog-bundle: ^3.3
- symfony/yaml: 4.2.*
Requires (Dev)
- pdepend/pdepend: ^2.5
- phpmd/phpmd: ^2.6
- phpunit/phpunit: ^7.5
- squizlabs/php_codesniffer: ^3.4
Conflicts
This package is auto-updated.
Last update: 2024-09-16 16:51:47 UTC
README
从每个需要扩展的 manifest.php 中解析依赖需求树。
默认结果会显示相应的 composer.json require
数组。如果您需要将其写入文件,只需重定向标准输出。
现在可以同时处理扩展名称和存储库名称。
关于问题及其解决方案的更详细解释可以在 文档 中找到。
安装
克隆此存储库。
安装依赖项
$ composer install
最低 PHP 版本要求:7.1
所需的 PHP 扩展:php7.1-xml, php7.1-mbstring
身份验证
在根目录中创建一个 .env
文件,包含您的 GitHub 令牌和组织名称(您可以复制并填写现有的 .env.dist 模板文件)。您需要提供一个有效的 GitHub 令牌,具有“repo”访问权限。
工具
此存储库中有两个工具
依赖解析器
有关此工具的更多信息,请参阅 此处。
$ php bin/console oat:dependencies:resolve [--repository-name <repository name> | --extension-name <extension name>] [--main-branch <main repository branch>] [--dependency-branches <dependency branches>] [--repositories] [--file <path to composer.json>]
主要存储库名称
:要解析的存储库的名称,例如 "oat-sa/extension-tao-testqti"。主要扩展名称
:"清单名称",例如要解析的扩展的 "taoQtiTest"。主要扩展分支
:要解析的扩展的分支。依赖分支
:为每个依赖项下载的期望分支。格式为 "extensionName1:branchName1,extensionName2:branchName2,...",例如 "tao:develop,taoQtiItem:fix/tao-1234,generis:10.12.14"。未指定所有扩展的分支将默认为 "develop"。存储库
:标志表示必须包含 composer 存储库信息。在私有存储库的情况下,必须设置 ssh 认证才能使用生成的 composer.json 文件。文件
:如果指定,则命令将生成 composer.json 并将其写入到 stdout。目标必须是可写的,可以是相对路径或绝对路径。例如,--file output/composer.json
将在当前工作目录中的output
目录(在当前工作目录内)生成 composer.json。
必须提供两个选项之一:repository-name
和 extension-name
。
用法示例
解析存储库 oat-sa/extension-tao-items
的依赖项(未指定分支,默认为 develop
),并将结果写入 /dest/dir/composer.json
,输出详细信息
php bin/console oat:dependencies:resolve --repository-name oat-sa/extension-tao-items > /dest/dir/composer.json -vv
将在控制台显示以下内容
app.INFO: Resolving dependencies for repository "oat-sa/extension-tao-item".
app.INFO: Retrieving oat-sa/extension-tao-item/develop/manifest.php
app.INFO: Resolving dependencies for repository "oat-sa/extension-tao-backoffice".
app.INFO: Retrieving oat-sa/extension-tao-backoffice/develop/manifest.php
app.INFO: Resolving dependencies for repository "oat-sa/tao-core".
app.INFO: Retrieving oat-sa/tao-core/develop/manifest.php
app.INFO: Resolving dependencies for repository "oat-sa/generis".
app.INFO: Retrieving oat-sa/generis/develop/manifest.php
并将以下内容写入 /dest/dir/composer.json
{
"require": {
"oat-sa/extension-tao-item": "dev-develop",
"oat-sa/extension-tao-backoffice": "dev-develop",
"oat-sa/tao-core": "dev-develop",
"oat-sa/generis": "dev-develop"
}
}
解析扩展 taoQtiTest
的依赖项,主要分支为 feature/tao-1234,tao 的分支为 feature/tao-1234,generis 的分支为 master,并将结果显示在控制台
php bin/console oat:dependencies:resolve --extension-name taoQtiTest --main-branch feature/tao-1234 --dependency-branches tao:feature/tao-1234,generis:master
将在控制台显示以下内容
{
"require": {
"oat-sa/extension-tao-testqti": "dev-feature/TAO-7304-CSRF-timed-token-pool",
"oat-sa/extension-tao-itemqti": "dev-develop",
"oat-sa/extension-tao-item": "dev-develop",
"oat-sa/extension-tao-backoffice": "dev-develop",
"oat-sa/tao-core": "dev-feature/TAO-7304-CSRF-timed-token-pool",
"oat-sa/generis": "dev-master",
"oat-sa/extension-tao-test": "dev-develop",
"oat-sa/extension-tao-delivery": "dev-develop",
"oat-sa/extension-tao-outcome": "dev-develop"
}
}
请求不存在的分支将导致主存储库和依赖项抛出异常
php bin/console oat:dependencies:resolve --repository-name oat-sa/tao-core --main-branch foo
Unable to retrieve reference to "oat-sa/tao-core/foo".
php bin/console oat:dependencies:resolve --repository-name oat-sa/tao-core --dependency-branches generis:bar
Unable to retrieve reference to "oat-sa/generis/bar".
尝试解析未知存储库的依赖项将导致异常
php bin/console oat:dependencies:resolve --repository-name oat-sa/tao-foo
Unknown repository "oat-sa/tao-foo".
尝试解析未知 扩展 的依赖项也将导致异常
php bin/console oat:dependencies:resolve --extension-name extension-tao-bar
Extension "extension-tao-bar" not found in map.
但如果它是新添加的扩展,它可能不在扩展映射中。如果是这种情况,您可以使用第二个工具更新扩展映射
php bin/console oat:repositories:update --reload-list
存储库列表器
有关此工具的更多信息,请参阅 此处。
此工具读取每个 oat-sa 存储库中的 Github 并维护 扩展名称 到 存储库名称 的映射。
/!\ 这不是每次都需要,当前在 <项目配置目录>/repositoryMap.json
中提供了一个最新的地图,这相当耗时...
更新仓库
从Github读取和分析仓库。
$ php bin/console oat:repositories:update [--reload-list] [--limit limit]
--reload-list
: 除了分析每个仓库外,还重新加载oat-sa仓库的列表limit
: 每次分析仓库的数量
导出仓库列表
将仓库映射导出到CSV文件,以便人类阅读和分析。
$ php bin/console repositories:dump [-f filename]
filename
: CSV文件名。默认为<项目根目录>/repositories.csv