我试图创建一个“codegen”脚本,该脚本读取.yaml文件并根据yaml文件中的值生成API.ts文件。
我想这样写我的yaml文件:
dbaas:
url: http://rackerlabs.github.io/wadl2swagger/openstack/swagger/dbaas.json
flavor-access:
url: http://rackerlabs.github.io/wadl2swagger/openstack/swagger/flavor-access-v2.1.json
yaml文件可以有任意数量的条目,但它总是以“name”.url格式。
给定这个yaml,我希望脚本运行以下命令:curl -k http://rackerlabs.github.io/wadl2swagger/openstack/swagger/dbaas.json -o dbaas-swagger.json
然后npx swagger-typescript-api -p dbaas-swagger.json -n dbaasApi.ts
然后,对于风味访问也是如此。这应该给我留下两个API文件:dbaasApi.ts
和flavor-accessApi.ts
我试图从ChatGPT获得帮助,但它的脚本不断给出来自curl
的错误:curl: (3) URL using bad/illegal format or missing URL
以下是它制作的脚本:
#!/bin/bash
while IFS=: read -r key value; do
if [[ "$key" =~ [a-zA-Z0-9_]+ ]]; then
top_node="${key// /}"
read -r url
swagger_url="${url// /}"
json_path="${top_node}-swagger.json"
api_ts="${top_node}Api.ts"
curl -k "$swagger_url" -o "$json_path"
echo "Downloaded swagger JSON for $top_node"
npx swagger-typescript-api -p "$json_path" -n "$api_ts"
echo "Generated TypeScript API for $top_node"
fi
done < ./swagger-codegen.yaml
2条答案
按热度按时间dfuffjeb1#
使用像yq这样有效的YAML处理器,解析YAML内容变得微不足道。定义DSL查询(yq特定)以CSV格式输出节点和URL,并使用shell循环在其上迭代
omvjsjqw2#
我采纳了@user1934428的建议,只使用了
grep
,因为yaml结构非常简单。以下是最终的脚本:
导致“curl:(3)URL使用错误/非法格式或缺少URL”消息是由于URL前的前导空格。只是不得不删除那些使用
sed