我已经使用提供的 docker 容器设置了一个 OpenFGA 项目。我编写了一个简短的
node.js
脚本来在本地初始化存储,设置模型,添加一些测试元组,并添加一些断言,然后测试所有这些。使用 typescript 和 tsx watch
,只要我添加新元组或断言或进行任何代码更改,这些测试就会运行。快乐的日子。
但是,每次编辑
authModel.fga
DSL 文件时,我都需要手动将其转换为 JSON,然后才能重新运行测试。到目前为止,我发现执行此操作的最佳方法是使用 VSCode 扩展命令,然后复制粘贴输出。
理想情况下,我想编写转换脚本,以便在模型文件发生更改时它会自动运行。我希望一切都是独立的,以便其他用户可以检查代码库、引导程序,然后继续。对于所有常用的节点模块,我们使用
docker
和 docker-compose
。
我看到有一个用于 OpenFGA CLI 的 docker 容器,但我不知道如何让它转换我的模型并输出到 JSON 文件。
这是我得到的最接近的:
docker run -it openfga/cli model transform "$(cat packages/fga/model/authModel.fga)" > packages/fga/model/authModel.json
...但这似乎用一堆奇怪的字符破坏了输出 JSON,如下所示:
[1m{[22m[m
[m[m [m[34;1m"[0;22m[34;1mschema_version[0;22m[34;1m"[0;22m[1m:[22m[32m"[0m[32m1.1[0m[32m"[0m[1m,[22m[m
[m[m [m[34;1m"[0;22m[34;1mtype_definitions[0;22m[34;1m"[0;22m[1m:[22m[m [m[1m[[22m[m
[m[m [m[1m{[22m[m
有什么想法吗?
尝试这个脚本
docker run -v $(pwd):/app -it openfga/cli model transform --file=app/src/main/resources/domain.fga | sed -r "s/\x1B\[[0-9;]*[a-zA-Z]//g" > src/main/resources/domain.json
这部分将从输出中删除奇怪的字符
sed -r "s/\x1B\[[0-9;]*[a-zA-Z]//g"