class Berkshelf::JsonFormatter

Attributes

cookbooks[R]
output[R]

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/berkshelf/formatters/json.rb, line 8
def initialize
  @output = {
    cookbooks: [],
    errors: [],
    messages: [],
    warnings: [],
  }
  @cookbooks = {}

  Berkshelf.ui.mute { super }
end

Public Instance Methods

cleanup_hook() click to toggle source
# File lib/berkshelf/formatters/json.rb, line 20
def cleanup_hook
  cookbooks.each do |name, details|
    details[:name] = name
    output[:cookbooks] << details
  end

  puts ::JSON.pretty_generate(output)
end
deprecation(message) click to toggle source
# File lib/berkshelf/formatters/json.rb, line 182
def deprecation(message)
  output[:warnings] << "DEPRECATED: #{message}"
end
error(message) click to toggle source

Add an error message entry to delayed output

@param [String] message

# File lib/berkshelf/formatters/json.rb, line 171
def error(message)
  output[:errors] << message
end
fetch(dependency) click to toggle source

@param [Berkshelf::Dependency] dependency

# File lib/berkshelf/formatters/json.rb, line 30
def fetch(dependency)
  cookbooks[dependency] ||= {}
  cookbooks[dependency][:version]  = dependency.locked_version.to_s
  cookbooks[dependency][:location] = dependency.location
end
info(cookbook) click to toggle source

Output Cookbook info entry to delayed output.

@param [CachedCookbook] cookbook

# File lib/berkshelf/formatters/json.rb, line 109
def info(cookbook)
  path = File.expand_path(cookbook.path)
  cookbooks[cookbook.cookbook_name] = { path: path }
end
install(source, cookbook) click to toggle source

Add a Cookbook installation entry to delayed output

@param [Source] source

the source the dependency is being downloaded from

@param [RemoteCookbook] cookbook

the cookbook to be downloaded
# File lib/berkshelf/formatters/json.rb, line 42
def install(source, cookbook)
  cookbooks[cookbook.name] ||= {}
  cookbooks[cookbook.name][:version] = cookbook.version

  unless source.default?
    cookbooks[cookbook.name][:api_source]    = source.uri
    cookbooks[cookbook.name][:location_path] = cookbook.location_path
  end
end
list(dependencies) click to toggle source

Output a list of cookbooks to delayed output

@param [Array<Dependency>] dependencies

# File lib/berkshelf/formatters/json.rb, line 124
def list(dependencies)
  dependencies.each do |dependency, cookbook|
    cookbooks[dependency.name] ||= {}
    cookbooks[dependency.name][:version] = dependency.locked_version.to_s
    if dependency.location
      cookbooks[dependency.name][:location] = dependency.location
    end
  end
end
msg(message) click to toggle source

Add a generic message entry to delayed output

@param [String] message

# File lib/berkshelf/formatters/json.rb, line 164
def msg(message)
  output[:messages] << message
end
outdated(hash) click to toggle source

Output a list of outdated cookbooks and the most recent version to delayed output

@param [Hash] hash

the list of outdated cookbooks in the format
{ 'cookbook' => { 'supermarket.chef.io' => #<Cookbook> } }
# File lib/berkshelf/formatters/json.rb, line 93
def outdated(hash)
  hash.each do |name, info|
    info["remote"].each do |remote_source, remote_version|
      source = remote_source.uri.to_s

      cookbooks[name] ||= {}
      cookbooks[name][:local] = info["local"].to_s
      cookbooks[name][:remote] ||= {}
      cookbooks[name][:remote][source] = remote_version.to_s
    end
  end
end
package(destination) click to toggle source

Output a package message using

@param [String] destination

# File lib/berkshelf/formatters/json.rb, line 117
def package(destination)
  output[:messages] << "Cookbook(s) packaged to #{destination}"
end
show(cookbook) click to toggle source

Output Cookbook path entry to delayed output

@param [CachedCookbook] cookbook

# File lib/berkshelf/formatters/json.rb, line 137
def show(cookbook)
  path = File.expand_path(cookbook.path)
  cookbooks[cookbook.cookbook_name] = { path: path }
end
skipping(cookbook, conn) click to toggle source

Add a Cookbook skip entry to delayed output

@param [Berkshelf::CachedCookbook] cookbook @param [Ridley::Connection] conn

# File lib/berkshelf/formatters/json.rb, line 80
def skipping(cookbook, conn)
  name = cookbook.cookbook_name
  cookbooks[name] ||= {}
  cookbooks[name][:version] = cookbook.version
  cookbooks[name][:skipped] = true
end
uploaded(cookbook, conn) click to toggle source

Add a Cookbook upload entry to delayed output

@param [Berkshelf::CachedCookbook] cookbook @param [Ridley::Connection] conn

# File lib/berkshelf/formatters/json.rb, line 69
def uploaded(cookbook, conn)
  name = cookbook.cookbook_name
  cookbooks[name] ||= {}
  cookbooks[name][:version] = cookbook.version
  cookbooks[name][:uploaded_to] = conn.server_url
end
use(dependency) click to toggle source

Add a Cookbook use entry to delayed output

@param [Dependency] dependency

# File lib/berkshelf/formatters/json.rb, line 55
def use(dependency)
  cookbooks[dependency.name] ||= {}
  cookbooks[dependency.name][:version] = dependency.cached_cookbook.version

  if dependency.location.is_a?(PathLocation)
    cookbooks[dependency.name][:metadata] = true if dependency.location.metadata?
    cookbooks[dependency.name][:location] = dependency.location.relative_path
  end
end
vendor(cookbook, destination) click to toggle source

Add a vendor message to delayed output

@param [CachedCookbook] cookbook @param [String] destination

# File lib/berkshelf/formatters/json.rb, line 156
def vendor(cookbook, destination)
  cookbook_destination = File.join(destination, cookbook.cookbook_name)
  msg("Vendoring #{cookbook.cookbook_name} (#{cookbook.version}) to #{cookbook_destination}")
end
version() click to toggle source

Output the version of Berkshelf

# File lib/berkshelf/formatters/json.rb, line 4
def version
  @output = { version: Berkshelf::VERSION }
end
warn(message) click to toggle source

Add a warning message entry to delayed output

@param [String] message

# File lib/berkshelf/formatters/json.rb, line 178
def warn(message)
  output[:warnings] << message
end