Class: Cheflow::Cookbook

Inherits:
Object
  • Object
show all
Defined in:
lib/cheflow/cookbook.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Cookbook

Returns a new instance of Cookbook.



7
8
9
10
# File 'lib/cheflow/cookbook.rb', line 7

def initialize(options)
  @options = options
  @berksfile = Berkshelf::Berksfile.from_options(options.dup)
end

Instance Attribute Details

#berksfileObject (readonly)

Returns the value of attribute berksfile.



4
5
6
# File 'lib/cheflow/cookbook.rb', line 4

def berksfile
  @berksfile
end

Instance Method Details

#dev_versionsObject



72
73
74
# File 'lib/cheflow/cookbook.rb', line 72

def dev_versions
  versions.select { |v| Semverse::Version.new(v).patch.odd? }
end

#frozen?Boolean

Returns:

  • (Boolean)


84
85
86
# File 'lib/cheflow/cookbook.rb', line 84

def frozen?
  ridley.cookbook.find(name, version).frozen?
end

#metadataObject



12
13
14
15
16
17
# File 'lib/cheflow/cookbook.rb', line 12

def 
   ||= begin
     = File.expand_path(File.join(path, 'metadata.rb'))
    Ridley::Chef::Cookbook::.from_file()
  end
end

#nameObject



23
24
25
# File 'lib/cheflow/cookbook.rb', line 23

def name
  @name ||= .name
end

#node_cookbook?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/cheflow/cookbook.rb', line 44

def node_cookbook?
  type == :node
end

#node_environment_objectsObject



48
49
50
51
52
53
54
55
56
# File 'lib/cheflow/cookbook.rb', line 48

def node_environment_objects
  @node_environment_objects ||= begin
    if node_cookbook?
      ridley.search(:environment, "name:#{name}*")
    else
      ridley.search(:environment, "cookbook_versions:#{name}")
    end
  end
end

#node_environments(with_versions = false) ⇒ Object



58
59
60
61
62
63
64
65
66
# File 'lib/cheflow/cookbook.rb', line 58

def node_environments(with_versions=false)
  @node_environments ||= node_environment_objects.map do |e|
    env = e.name.gsub /^#{name}_/, ''
    env = env == name ? 'production' : env
    out = with_versions ? env.ljust(12) : env
    out += " (#{e.cookbook_versions[name]})" if with_versions
    out
  end.compact.sort
end

#node_nameObject

The name of the Node cookbook without the “node_” prefix.



28
29
30
# File 'lib/cheflow/cookbook.rb', line 28

def node_name
  @node_name ||= node_cookbook? ? name.sub(/^node_/, '') : name
end

#pathObject



32
33
34
# File 'lib/cheflow/cookbook.rb', line 32

def path
  @path ||= File.dirname(berksfile.filepath)
end

#prod_versionsObject



76
77
78
# File 'lib/cheflow/cookbook.rb', line 76

def prod_versions
  versions.select { |v| Semverse::Version.new(v).patch.even? }
end

#to_sObject



80
81
82
# File 'lib/cheflow/cookbook.rb', line 80

def to_s
  "#{name} v#{version}#{' (dev)' if version.patch.odd?}#{' (FROZEN)' if frozen?}"
end

#typeObject



36
37
38
39
40
41
42
# File 'lib/cheflow/cookbook.rb', line 36

def type
  @type ||= if name.start_with? 'node_'
    :node
  else
    :non_node
  end
end

#uploadObject



88
89
90
# File 'lib/cheflow/cookbook.rb', line 88

def upload
  ridley.cookbook.upload path, freeze: !version.patch.odd?
end

#versionObject



19
20
21
# File 'lib/cheflow/cookbook.rb', line 19

def version
  @version ||= Semverse::Version.new(.version)
end

#versionsObject



68
69
70
# File 'lib/cheflow/cookbook.rb', line 68

def versions
  @versions ||= ridley.cookbook.versions(name)
end