引力子 / 迁移工具包
一个控制台应用程序,用于为基于引力子的服务生成迁移
Requires
- php: >=7.1.0
- skyscanner/jsonpath: ^0.7.3
Requires (Dev)
- cypresslab/gitelephant: ^1.1
- diff/diff: ^2.1
- fzaninotto/faker: ^1.6
- libgraviton/codesniffer: ^2.0
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ^3.0
- symfony/console: ^3.3
- symfony/filesystem: ^3.3
- symfony/finder: ^3.3
- twig/twig: ^1.34
This package is auto-updated.
Last update: 2024-09-17 20:33:12 UTC
README
这是一个 Symfony 控制台应用程序,提供有关生成和迁移基于 引力子 的服务和服务定义的实用工具。
当我们生成迁移时,我们生成可以与 doesntmattr/mongodb-migrations
一起使用的类。
当前状态
这是一个相当新的项目,生成迁移并非易事。
migrationkit
已经以可扩展的方式设计,因此我们可以轻松添加新的迁移场景。
用法
推荐的做法是使用我们的 Docker 镜像。它可在 Docker Hub 上找到,因此您可以立即使用它。
Docker
您可以非常容易地执行该工具
docker run --rm graviton/migrationkit
您应该会看到带有命令列表的帮助屏幕。
要执行给定命令,只需将其添加到 run
docker run --rm graviton/migrationkit graviton:migrations:generate --help
请随意用 Docker Compose 包装它。
解决用户权限问题
我们的 Docker 镜像包含一些解决用户权限问题的支持,因为它应该在您的本地磁盘上生成资源。
该镜像包含环境变量 PUID
和 PGID
,您应将其设置为拥有目标目录的 local user
的 UID 和 GID。
您可以通过发出 id
命令找到 UID 和 GID
user@host:~$ id
uid=1000(user) gid=1000(user) groups=1000(user),...
一旦您知道了这些,就在 run
上设置它们
docker run --rm -e PUID=1000 -e PGID=1000 graviton/migrationkit graviton:migrations:generate --help
这应该解决所有权限问题。
Composer
如果您真的想在项目环境中使用它,可以使用 composer
composer require --dev graviton/migrationkit
这真的应该是一个 dev
依赖项,用于您的项目。
命令
graviton:version-migrations:generate
从您的当前分支生成到另一个分支的迁移,并生成迁移
假设传递给 baseDir
的目录是一个 Git 仓库。然后它复制该目录,切换到由参数 branch
定义的标签/分支,并使用这两个目录调用 graviton:migrations:generate
命令,从而允许您生成两个(可能是未推送到)分支之间的差异。
人们可以拉取 develop
,创建一个功能分支,进行更改,然后使用 develop
作为比较分支调用此命令。
graviton:fixture-entity:generate
根据服务定义生成随机 JSON 有效负载实体
这是一个用于迁移的辅助命令。它接受服务定义并生成 number
(参数)个文件(默认 10)的随机假 JSON 有效负载,可以将其 PUT
/POST
到引力子实例。
它们符合指定的服务定义,并包含所有指定的字段。
请注意,这些假数据有效负载可能对想要从结构中理解/执行业务操作的应用程序没有意义。
refMap 文件
为了生成有效的 extref
字段,您可能需要指定一个 refMap
文件(命令的 --refMap
选项)。
这是一个简单的 YAML 文件,将字段的 Collection
属性映射到一个 URL。
示例
App: /core/app/ MyOtherEntity: /other/entity/
graviton:definition-metadata:generate
从服务定义生成 YML 元数据文件
在内部,migrationkit
使用简单的 YAML 文件来完成操作。这个命令有助于生成这些文件。例如,您需要这些文件来执行 graviton:fixture-entity:generate
命令。
graviton:from-ios-schema:generate
从 iOS 模式生成服务定义
这个功能满足了一些用户的需求,他们需要从专有的 iOS 模式格式生成与 Graviton 兼容的服务定义。
graviton:migrations:generate
这是一个低级别的迁移命令,允许您指定两个目录并在它们之间进行迁移。
允许您指定两个目录并从中生成迁移文件。它会提示您可能的冲突,您可能需要提供输入来解决它们。