class CookbookBumper::Metadata

Attributes

aliases[R]
path[R]
version[R]

Public Class Methods

new(path) click to toggle source
# File lib/cookbook_bumper/metadata.rb, line 9
def initialize(path)
  @path = path
  @aliases = []
  @metadata = parse(path)
  @version = CookbookBumper::Version.new(@metadata.version)
end

Public Instance Methods

bump() click to toggle source
# File lib/cookbook_bumper/metadata.rb, line 28
def bump
  version.bump
  save
end
bumped?() click to toggle source
# File lib/cookbook_bumper/metadata.rb, line 24
def bumped?
  @version != @metadata.version
end
method_missing(method_sym, *args, &block) click to toggle source
Calls superclass method
# File lib/cookbook_bumper/metadata.rb, line 43
def method_missing(method_sym, *args, &block)
  if respond_to?(method_sym)
    @metadata.send(method_sym, *args, &block)
  else
    puts "Couldn't find method #{method_sym}"
    super
  end
end
parse(path) click to toggle source
# File lib/cookbook_bumper/metadata.rb, line 16
def parse(path)
  metadata = Chef::Cookbook::Metadata.new.tap { |m| m.from_file(path); m } # rubocop:disable Style/Semicolon
  path.match(%r{/(?<cookbook_dir>[^/]+)/metadata\.rb$}) do |m|
    @aliases |= [m[:cookbook_dir]] if metadata.name != m[:cookbook_dir]
  end
  metadata
end
respond_to_missing?(method_sym, include_private = false) click to toggle source
Calls superclass method
# File lib/cookbook_bumper/metadata.rb, line 52
def respond_to_missing?(method_sym, include_private = false)
  @metadata.respond_to?(method_sym) || super
end
save() click to toggle source
# File lib/cookbook_bumper/metadata.rb, line 39
def save
  File.write(path, updated_contents)
end
updated_contents() click to toggle source
# File lib/cookbook_bumper/metadata.rb, line 33
def updated_contents
  File.read(path).sub(/^\s*version.*/) do |version_line|
    version_line.sub(/[\d\.]+/, @metadata.version => @version)
  end
end