【发布时间】:2020-07-17 15:52:19
【问题描述】:
我正在寻找一种方法来自动完成在随机 GUID 上链接多个 JSON 对象这一繁琐的反人类工作。
有几个相互关联的 JSON 格式文件:
{
"name": "some.interesting.name",
"description": "helpful description",
"instanceId": "random-GUID.for.some.interesting.name",
"policies": [
{
"name": "some.interesting.name-policy",
"instanceId": "random-GUID.for.some.interesting.name-policy"
}
],
"attributes": [
"one": {
"ref": "!some.interesting.name-2#random-GUID.for.some.interesting.name-2"
}
]
}
名称是静态且可读的。 文件位置是静态的并遵循名称结构。
每当开发人员对任何文件进行最微小的更改时,InstanceId 都需要更改。 正在寻找一种工具,或者关于如何编写工具的想法,以随机生成 GUID 并将其插入到集合中每个文件的正确位置。
注意:我们已成功使用npm nanoid 生成 GUID,因此解决了随机值问题。
提供一个最小的可测试示例。 输入将是配置目录及其下的所有文件。
政策文件: 配置/策略/my_policy.js
{
"name" : "policy.my_policy"
"instanceId": "{$policy.my_policy}"
"assets": [
{
"user-info": "!assets.current_user_info#{$assets.current_user_info}"
},
]
"commands": [
{
"update-user": "!commands.update_admin_user#{$commands.update_admin_user}"
}
]
}
配置/资产/current_user_info.js
{
"name" : "assets.current_user_info"
"instanceId": "{$assets.current_user_info}"
"attribute": {
"type": "string",
"value": "admin"
}
}
配置/命令/update_admin_user.js
{
"name" : "commands.update_admin_user"
"instanceId": "{$commands.update_admin_user}"
"inputType": {
"name": "assets.current_user_info"
"instanceId": "{$assets.current_user_info}"
}
}
输出将是相同的文件,可能复制到输出目录,在相同的文件夹结构中, 变量在哪里
$assets.current_user_info
$commands.update_admin_user
$policy.my_policy
使用 npm nanoid 或类似库生成的所有文件中的 GUID 值替换。
政策文件: 配置/策略/my_policy.js
{
"name" : "policy.my_policy"
"instanceId": "b35970fe-96dd-481d-a244-8880cc0cb818"
"assets": [
{
"user-info": "!assets.current_user_info#c3a17d65-921d-4cc4-9e23-5d40bd519289}"
},
]
"commands": [
{
"update-user": "!commands.update_admin_user#52a9a82e-a4e4-42f1-8376-a4e5ac06c9bd"
}
]
}
配置/资产/current_user_info.js
{
"name" : "assets.current_user_info"
"instanceId": "c3a17d65-921d-4cc4-9e23-5d40bd519289"
"attribute": {
"type": "string",
"value": "admin"
}
}
配置/命令/update_admin_user.js
{
"name" : "commands.update_admin_user"
"instanceId": "52a9a82e-a4e4-42f1-8376-a4e5ac06c9bd"
"inputType": {
"name": "assets.current_user_info"
"instanceId": "c3a17d65-921d-4cc4-9e23-5d40bd519289"
}
}
【问题讨论】:
标签: javascript python json npm awk