Как написать ANSI файл YAML по Clojure? - PullRequest
0 голосов
/ 22 января 2019

У меня есть этот простой ANSI-файл yaml, он прекрасно работает:

--- 
- hosts: 172.16.10.104 
- tasks: 
  - name: ping 
    ping: ''

Я использую clojure https://github.com/owainlewis/yaml, чтобы использовать clojure для генерации этого файла yaml:

(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:

- hosts: 172.16.10.104
- tasks: ''
- name: ping
  ping: ''

это не может работать, "-имя" должна превышать два символа "-tasks"

, если я определяю данныекак это:

(def data [{:hosts "172.16.10.104"}  {:tasks ""} [{:name "ping",:ping ""}]])

он генерирует это:

- hosts: 172.16.10.104
- tasks: ''
- - name: ping
    ping: ''

это тоже не может работать

Я не знаю, как написать файл clojure для генерацииyaml файл, как это, спасибо!

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Кроме того, вы можете рассмотреть возможность использования github.com/clj-commons/clj-yaml.Это библиотека lib circle-ci использует для своей вещи yaml

0 голосов
/ 22 января 2019

Попробуйте вложить карту :name:

  (let [data [{:hosts "172.16.10.104"}
              {:tasks [{:name "ping"}
                       {:ping ""}]}]]
    (println (yaml/generate-string data)))

с результатом:

- {hosts: 172.16.10.104}
- tasks:
  - {name: ping}
  - {ping: ''}
...