Berksfile语法问题



我一直在寻找关于Berksfile中内容的详细文档,但我只找到了一些例子,以及"你可以这样做"的非正式内容。(这包括http://berkshelf.com…)

Q1:Berksfile的基本语法是什么?

Q2:可以进入Berksfile的"声明"的(完整)列表是什么?

Q3:"cookbook"声明采用了一个可选的散列参数。香草Berkshelf支持的(完整)选项列表是什么?

对于我的答案,我将链接到v2.0.12版本,因为v3目前正在开发中。

A1.基本语法与任何Ruby文件相同,因为Berksfile只是另一个Ruby DSL(它似乎主要由这个源代码驱动,并得到了DSL Eval Mixin的一些帮助)

A2.很难定义完整的声明列表,因为Ruby可以在任何时候以多种方式进行更改/增强。(Hurray表示猴痘)。但从v2.0.12开始,全套声明似乎包括(metadatagroupsitechef_apicookbook),因为这些都是用expose_method标记的方法。当然,每个选项都取决于每个选项的实现。(此外,任何有效的ruby都可以放入Berksfile中,我在A3中利用了这一点,评估当然是在作为mixin一部分的CleanRoom类中进行的)。

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?

最新更新