首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用clojure编写一个可分析的yaml文件?

问如何用clojure编写一个可分析的yaml文件?
EN

Stack Overflow用户
提问于 2019-01-22 16:18:15
回答 2查看 174关注 0票数 1

我有一个简单的ansible yaml文件,它工作得很好:

代码语言:javascript
复制
--- 
- hosts: 172.16.10.104 
- tasks: 
  - name: ping 
    ping: ''

我使用一个clojure https://github.com/owainlewis/yaml来生成这个yaml文件:

代码语言:javascript
复制
(defn -main
    [& args]
    (def data [{:hosts "172.16.10.104"} {:tasks ""}     {:name "ping",:ping ""} ])
    (def a (yaml/generate-string data :dumper-options {:flow-style :block}))
    (println a)
)

下面的代码可以生成yaml文件:

代码语言:javascript
复制
- hosts: 172.16.10.104
- tasks: ''
- name: ping
  ping: ''

它不能工作,"- name“必须超过"-tasks”的两个字符

如果我这样定义数据:

代码语言:javascript
复制
(def data [{:hosts "172.16.10.104"}  {:tasks ""} [{:name "ping",:ping ""}]])

它会生成以下内容:

代码语言:javascript
复制
- hosts: 172.16.10.104
- tasks: ''
- - name: ping
    ping: ''

它也不能工作

我不知道如何编写clojure文件来生成这样的yaml文件,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-22 16:29:22

尝试嵌套:name映射:

代码语言:javascript
复制
  (let [data [{:hosts "172.16.10.104"}
              {:tasks [{:name "ping"}
                       {:ping ""}]}]]
    (println (yaml/generate-string data)))

with结果:

代码语言:javascript
复制
- {hosts: 172.16.10.104}
- tasks:
  - {name: ping}
  - {ping: ''}
票数 1
EN

Stack Overflow用户

发布于 2019-01-22 17:00:22

此外,您可能需要考虑使用github.com/clj-commons/clj-yaml。这是lib circle-ci用来做yaml的东西

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54303944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档