File: //proc/self/root/usr/lib/ruby/site_ruby/1.8/puppet/module_tool/errors/shared.rb
module Puppet::ModuleTool::Errors
class NoVersionsSatisfyError < ModuleToolError
def initialize(options)
@requested_name = options[:requested_name]
@requested_version = options[:requested_version]
@installed_version = options[:installed_version]
@conditions = options[:conditions]
@action = options[:action]
super "Could not #{@action} '#{@requested_name}' (#{vstring}); no version satisfies all dependencies"
end
def multiline
message = []
message << "Could not #{@action} module '#{@requested_name}' (#{vstring})"
message << " No version of '#{@requested_name}' can satisfy all dependencies"
message << " Use `puppet module #{@action} --ignore-dependencies` to #{@action} only this module"
message.join("\n")
end
end
class NoCandidateReleasesError < ModuleToolError
def initialize(options)
@module_name = options[:module_name]
@requested_version = options[:requested_version]
@installed_version = options[:installed_version]
@source = options[:source]
@action = options[:action]
if @requested_version == :latest
super "Could not #{@action} '#{@module_name}'; no releases are available from #{@source}"
else
super "Could not #{@action} '#{@module_name}'; no releases matching '#{@requested_version}' are available from #{@source}"
end
end
def multiline
message = []
message << "Could not #{@action} '#{@module_name}' (#{vstring})"
if @requested_version == :latest
message << " No releases are available from #{@source}"
message << " Does '#{@module_name}' have at least one published release?"
else
message << " No releases matching '#{@requested_version}' are available from #{@source}"
end
message.join("\n")
end
end
class InstallConflictError < ModuleToolError
def initialize(options)
@requested_module = options[:requested_module]
@requested_version = v(options[:requested_version])
@dependency = options[:dependency]
@directory = options[:directory]
@metadata = options[:metadata]
super "'#{@requested_module}' (#{@requested_version}) requested; installation conflict"
end
def multiline
message = []
message << "Could not install module '#{@requested_module}' (#{@requested_version})"
if @dependency
message << " Dependency '#{@dependency[:name]}' (#{v(@dependency[:version])}) would overwrite #{@directory}"
else
message << " Installation would overwrite #{@directory}"
end
if @metadata
message << " Currently, '#{@metadata["name"]}' (#{v(@metadata["version"])}) is installed to that directory"
end
if @dependency
message << " Use `puppet module install --ignore-dependencies` to install only this module"
else
message << " Use `puppet module install --force` to install this module anyway"
end
message.join("\n")
end
end
class InvalidDependencyCycleError < ModuleToolError
def initialize(options)
@module_name = options[:module_name]
@requested_module = options[:requested_module]
@requested_version = options[:requested_version]
@conditions = options[:conditions]
@source = options[:source][1..-1]
super "'#{@requested_module}' (#{v(@requested_version)}) requested; Invalid dependency cycle"
end
def multiline
trace = []
trace << "You specified '#{@source.first[:name]}' (#{v(@requested_version)})"
trace += @source[1..-1].map { |m| "which depends on '#{m[:name]}' (#{v(m[:version])})" }
message = []
message << "Could not install module '#{@requested_module}' (#{v(@requested_version)})"
message << " No version of '#{@module_name}' will satisfy dependencies"
message << trace.map { |s| " #{s}" }.join(",\n")
message << " Use `puppet module install --force` to install this module anyway"
message.join("\n")
end
end
class NotInstalledError < ModuleToolError
def initialize(options)
@module_name = options[:module_name]
@suggestions = options[:suggestions] || []
@action = options[:action]
super "Could not #{@action} '#{@module_name}'; module is not installed"
end
def multiline
message = []
message << "Could not #{@action} module '#{@module_name}'"
message << " Module '#{@module_name}' is not installed"
message += @suggestions.map do |suggestion|
" You may have meant `puppet module #{@action} #{suggestion}`"
end
message << " Use `puppet module install` to install this module" if @action == :upgrade
message.join("\n")
end
end
class MultipleInstalledError < ModuleToolError
def initialize(options)
@module_name = options[:module_name]
@modules = options[:installed_modules]
@action = options[:action]
super "Could not #{@action} '#{@module_name}'; module appears in multiple places in the module path"
end
def multiline
message = []
message << "Could not #{@action} module '#{@module_name}'"
message << " Module '#{@module_name}' appears multiple places in the module path"
message += @modules.map do |mod|
" '#{@module_name}' (#{v(mod.version)}) was found in #{mod.modulepath}"
end
message << " Use the `--modulepath` option to limit the search to specific directories"
message.join("\n")
end
end
class LocalChangesError < ModuleToolError
def initialize(options)
@module_name = options[:module_name]
@requested_version = options[:requested_version]
@installed_version = options[:installed_version]
@action = options[:action]
super "Could not #{@action} '#{@module_name}'; module has had changes made locally"
end
def multiline
message = []
message << "Could not #{@action} module '#{@module_name}' (#{vstring})"
message << " Installed module has had changes made locally"
message << " Use `puppet module #{@action} --ignore-changes` to #{@action} this module anyway"
message.join("\n")
end
end
class InvalidModuleError < ModuleToolError
def initialize(name, options)
@name = name
@action = options[:action]
@error = options[:error]
super "Could not #{@action} '#{@name}'; #{@error.message}"
end
def multiline
message = []
message << "Could not #{@action} module '#{@name}'"
message << " Failure trying to parse metadata"
message << " Original message was: #{@error.message}"
message.join("\n")
end
end
end