endlessdreams / fao-toolkit
FAO工具包,用于管理FAO服务,例如SMTA api、DOI api以及WIEWS代码和组织数据抓取
Requires
- php: ^8.1
- composer-runtime-api: ^2.0
- ext-curl: *
- ext-dom: *
- ext-fileinfo: *
- ext-intl: *
- ext-json: *
- ext-libxml: *
- ext-mbstring: *
- ext-pdo: *
- ext-pdo_sqlite: *
- ext-simplexml: *
- ext-xmlwriter: *
- ext-zlib: *
- clue/zlib-react: ^1.2
- dbrekelmans/bdi: ^1.1
- doctrine/annotations: ^2.0
- league/iso3166: ^4.3
- nikic/fast-route: ^1.3
- openspout/openspout: ^4.19
- react/async: ^4.1
- react/http: ^1.9
- react/react: ^1.0
- ringcentral/psr7: ^1.3
- symfony/dom-crawler: ^6.3
- symfony/expression-language: ^6.3
- symfony/intl: ^6.3
- symfony/panther: ^2.1
- symfony/process: ^6.3
- symfony/property-access: ^6.3
- symfony/property-info: ^6.3
- symfony/serializer: ^6.3
- symfony/validator: ^6.3
- symfony/yaml: ^6.3
- vlucas/phpdotenv: ^5.3
- yiisoft/aliases: ^3.0
- yiisoft/arrays: ^3.0
- yiisoft/cache: ^3.0
- yiisoft/cache-file: ^3.0
- yiisoft/db: ^1.1
- yiisoft/db-sqlite: ^1.0
- yiisoft/factory: ^1.1
- yiisoft/log: ^2.0
- yiisoft/log-target-file: ^3.0
- yiisoft/mailer: ^5.0
- yiisoft/mailer-symfony: ^3.0
- yiisoft/yii-console: 2.1.0
- yiisoft/yii-runner-console: ^2.0
Requires (Dev)
- ext-pcntl: *
- ext-posix: *
- cocur/background-process: ^0.7.0
- codeception/codeception: ^5.0
- codeception/module-asserts: ^3.0
- codeception/module-cli: ^2.0
- codeception/module-phpbrowser: ^3.0
- fakerphp/faker: ^1.23
- friendsofphp/php-cs-fixer: ^3.54
- league/csv: ^9.10
- phpunit/phpunit: ^10.5
- quazardous/php-bump-version: ^1.0
- squizlabs/php_codesniffer: ^3.8
- vimeo/psalm: ^4.30|^5.7
Suggests
- yiisoft/db-mssql: ^1.0; This package is for to connect to [SQLServer] database.
- yiisoft/db-mysql: ^1.0; This package is for to connect to [MySql] database.
- yiisoft/db-pgsql: ^1.0; This package is for to connect to [PostgreSQL] database.
- yiisoft/db-sqlite: ^1.0; This package is for to connect to [Sqlite] database.
README
Fao-Toolkit控制台应用程序
面向基因库的使用
FAO工具包的目的是成为一个面向基因库的终端客户端工具包,以便更方便地与FAO交换数据。目前实现的功能如下:
- 获取注册机构信息,如FAO机构代码(又称WIEWS代码)及其地址。
- 注册标准转移协议(SMTA)
- 注册多作物护照数据(GLIS)以获取DOI,并保持其更新。
客户端是通用的,并可根据需要配置以与多个基因库信息系统协同工作。想法是在配置文件中将所使用信息系统的必要表列映射到。
开始使用
首先,您需要要求您的信息系统使用的必要数据库库。更多关于此的信息,请参阅安装部分
。
为了使SMTA发布/注册工作,您需要以下内容:
- 在FAO的Planttreaty站点上有账户。
- 两个包含SMTA和SMTA材料数据的数据库表或数据视图。
- 在此应用程序的配置文件中进行配置。
- 运行./yii(或bin/fao-toolkit)smta/register命令。该命令使用参数来限制您打算发布/注册哪些SMTA。
要注册和/或更新DOI,您需要以下内容:
- 在FAO的Planttreaty站点上有账户(它实际上与上面的账户相同。如果您有Easysmta账户,您还将有一个注册DOI的账户。无论如何,如果您代表国家基因库或类似机构,请联系国际植物遗传资源食物和农业条约办公室。)
- 两个或更多包含GLIS数据的数据库表或数据视图(https://www.fao.org/3/bt113e/bt113e.pdf)。有关更多信息,请参阅fao-params-dist.php。
- 在此应用程序的配置文件中进行配置。
- 运行./yii(或bin/fao-toolkit)glis:register命令。该命令使用参数来限制您打算发布/注册哪些GLIS。
安装
要使用Composer安装此项目,请在控制台中运行以下命令
composer create-project endlessdreams/fao-toolkit=^3.0 fao-toolkit
或手动将包添加到您的composer.json文件的require部分
"endlessdreams/fao-toolkit": "^3.0"
或全局安装
composer global create-project endlessdreams/fao-toolkit=^3.0 fao-toolkit
这将把fao-toolkit安装到~/.composer/vendor/目录中,最重要的是,fao-toolkit CLI工具也被安装到~/.composer/vendor/bin/。
只需将此目录添加到您的~/.bash_profile(或~/.bashrc)中,如下所示
export PATH=~/.composer/vendor/bin:$PATH
现在,fao-toolkit就在您的命令行中可用。
要确保您的工具保持最新,请这样做
composer global update
composer global install
要删除包,请编辑~/.composer/composer.json,然后运行composer global update。
数据库
为了能够使用SQLite之外的其他数据库,您还需要安装这些包和驱动程序。Foa-Toolkit在SQLite之外还测试了以下数据库类型; MySql、Postgres和SQL server。
要设置此命令以使用其他数据库,请按照链接进行操作。
配置
主要的配置文件名为fao-params-dist.php,位于fao-toolkit应用程序配置文件夹的子文件夹中。子文件夹可以是以下之一:
- prod:用于生产。这是您通常使用的。
- dev:用于开发到假服务器。
- test:用于codeception测试。
请勿更改fao-params-dist.php文件。而是创建一个名为fao-params-local.php的副本。
在fao-params-dist.php文件中,您将看到以下结构:
return [
'options' => [
'version' => '3',
],
'databases' => [
'@defaultModule' => 'smta',
'database' => [
0 => [
'@module' => 'smta',
'driver' => $_ENV['FT_DB_DRIVER'] ?: 'sqlite',
'host' => $_ENV['FT_DB_HOST'] ?: 'localhost',
'database_name' => $_ENV['FT_DB_DATABASE'] ?: '@resources/database/smta-prod.sq3',
'port' => $_ENV['FT_DB_PORT'] ?: null,
'options' => $_ENV['FT_DB_OPTIONS'] ?: [],
'username' => $_ENV['FT_DB_USERNAME'] ?: 'dbuser',
'password' => $_ENV['FT_DB_PASSWORD'] ?: 'dbpassword',
],
],
],
...
要设置数据库和FAO HTTPS API凭证,您可以在以下位置进行操作:
- 在配置文件中
- 在.env文件中设置环境变量
- 或者,在/etc/environment中导出环境变量,并确保它们不会被.env文件覆盖。
有关如何配置命令的更多信息,请参阅配置文件。
用法
示例编写的方式是假设您的工作目录是bin或应用程序已全局安装。更多用法示例可以在用法文件中找到。
最重要的命令是列出您的选项。
fao-toolkit help
第二重要的命令是列出可用的命令。
fao-toolkit list
现在我们已经完成了基础知识,下面是一些实际的示例
获取WIEWS研究所注册组织的详细信息
fao-toolkit wiews:fetch NOR051
获取WINGS研究所代码注册组织的详细信息,并选择输出格式如JSON。
fao-toolkit wiews:fetch --format=json -- NOR051
测试生成GLIS(MCPD扩展标准)到终端。如您所注意到的,我们使用了一个“测试选项开关”。保留它以避免意外向FAO生产API发送请求。如果您已正确配置了具有正确URL和凭证的配置。
fao-toolkit glis:register --test --dry-run --limit=1 -vv
测试生成从2020-01-01开始的所有glis xml。(不需要https凭证,只需您的数据库)
fao-toolkit glis:register --test --dry-run --from=2023-01-01 --limit=1000 --skip-invalid
您可能会注意到打印出了概要统计信息,甚至一些验证错误。对于每个G lis或Smta命令调用,将创建一个Excel文件,其中包含任务统计信息。临时文件夹是此文件的默认文件夹。
要选择另一个输出路径,例如“./stats_file.xlsx”。此文件在存在一些验证错误时可能很有帮助。然后我们将列出它们,并注明哪个验证失败。
fao-toolkit glis:register --test --dry-run --from=2023-01-01 --limit=1000 --skip-invalid --output-path=./stats_file.xlsx
测试生成xml到终端。
fao-toolkit smta:register --test --dry-run -vv
测试生成所有smta xml到2018-01-01。(不需要https凭证,只需您的数据库)。类似于glis:register。请注意,如果没有明确指定order_by选项,smta的默认排序列是日期(smta的日期)。
fao-toolkit smta:register --test --dry-run --to=2018-01-01
测试发布所有截至2018-01-01的SMTA。
fao-toolkit smta:register --to=2018-01-01 --test
测试从2017-01-01发布到2018-01-01的所有SMTA。
fao-toolkit smta:register --from=2017-01-01 --to=2018-01-01 --test
实际发布所有截至2018-01-01的SMTA。(无测试)
fao-toolkit smta:register --to=2018-01-01
如果几个基因库托管在同一个服务器上,您必须明确指出您将注册哪个基因库/研究所的SMTA。然后您使用具有WINGS代码的run-as参数。
fao-toolkit smta:register --to=2018-01-01 --run-as=SWE054
如果run-as研究所使用不同前缀的访问号,并且只需注册一组。注意:这是针对MS SQL服务器,否则将使用正则表达式。
fao-toolkit smta:register --to=2018-01-01 --run-as=SWE054 --filter="NGB %"
测试
单元测试
模板附带现成的Codeception配置。为了执行测试,请运行
vendor/bin/codecept run
静态分析
代码使用Psalm进行静态分析。要运行静态分析
./vendor/bin/psalm
致谢
荷兰遗传资源中心ir. R (Roel) Hoekstra和dr.ir. TJL (Theo) van Hintum允许我查看他们的dos cmd工具包。
联合国粮农组织气候、生物多样性、土地和水部门马克罗·马尔塞拉先生,感谢您的大力支持。
许可证
此命令行程序在AGPL许可证下授权。
有关更多信息,请参阅许可证
。