Вопросы синтаксиса Berksfile
Я искал подробную документацию о том, что входит в Berksfile, но все, что я нашел, это примеры, и неофициальные вещи "вы можете сделать это". (Это включает в себя материал на http://berkshelf.com/...)
Q1: Каков основной синтаксис Berksfile?
Q2: Что такое (полный) список "объявлений", которые могут входить в Berksfile?
В3: Объявление "поваренной книги" принимает необязательный параметр хеширования. Что такое (полный) список опций, которые поддерживает vanilla Berkshelf?
1 ответ
Для моего ответа я собираюсь сослаться на версии v2.0.12, поскольку v3 находится в стадии разработки.
A1. Базовый синтаксис такой же, как у любого файла Ruby, поскольку Berksfile - это просто еще один Ruby DSL (кажется, что он в основном основан на этом источнике и некоторой помощи из их DSL Eval Mixin)
A2. Полный список объявлений сложно определить, так как Ruby может быть изменен / улучшен различными способами в любое время. (Ура для мартышки). Но похоже, что начиная с v2.0.12 полный набор объявлений включает в себя (metadata
,group
,site
,chef_api
,cookbook
), так как это методы, помеченные expose_method. Варианты для каждого, конечно же, зависят от реализации каждого из них. (Также любой допустимый рубин можно поместить в Berksfile, и я использую это в A3, оценка, конечно, происходит внутри класса CleanRoom, который является частью mixin).
A3. Опять же, расширяемость делает это трудным, однако из нескольких проходов кажется, что класс CookbookSource определяет, какие допустимые параметры есть с некоторыми методами уровня класса. Ну, пользуясь тем, что это рубин DSL, я бросил
puts "options: #{Berkshelf::CookbookSource.valid_options}"
в мой Berksfile, побежал berks
и вышел с:
options: [:constraint, :locations, :group, :locked_version, :chef_api, :node_name, :client_key, :git, :ref, :branch, :tag, :rel, :github, :protocol, :site, :path, :metadata]
Теперь, что все это значит, потребуется больше погружений в исходный код. Однако, может быть, это даст вам стартовую площадку для просмотра вещей?
Из любопытства какая документация, по вашему мнению, отсутствует на сайте http://berkshelf.com/?