1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
|
# frozen_string_literal: true
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]
@unsatisfied = options[:unsatisfied]
super _("Could not %{action} '%{module_name}' (%{version}); no version satisfies all dependencies") % { action: @action, module_name: @requested_name, version: vstring }
end
def multiline
message = []
message << _("Could not %{action} module '%{module_name}' (%{version})") % { action: @action, module_name: @requested_name, version: vstring }
if @unsatisfied
message << _(" The requested version cannot satisfy one or more of the following installed modules:")
if @unsatisfied[:current_version]
message << _(" %{name}, installed: %{current_version}, expected: %{constraints}") % { name: @unsatisfied[:name], current_version: @unsatisfied[:current_version], constraints: @unsatisfied[:constraints][@unsatisfied[:name]] }
else
@unsatisfied[:constraints].each do |mod, range|
message << _(" %{mod}, expects '%{name}': %{range}") % { mod: mod, name: @requested_name, range: range }
end
end
message << _("")
else
message << _(" The requested version cannot satisfy all dependencies")
end
# TRANSLATORS `puppet module %{action} --ignore-dependencies` is a command line and should not be translated
message << _(" Use `puppet module %{action} '%{module_name}' --ignore-dependencies` to %{action} only this module") % { action: @action, module_name: @requested_name }
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}") % { action: @action, module_name: @module_name, source: @source }
else
super _("Could not %{action} '%{module_name}'; no releases matching '%{version}' are available from %{source}") % { action: @action, module_name: @module_name, version: @requested_version, source: @source }
end
end
def multiline
message = []
message << _("Could not %{action} '%{module_name}' (%{version})") % { action: @action, module_name: @module_name, version: vstring }
if @requested_version == :latest
message << _(" No releases are available from %{source}") % { source: @source }
message << _(" Does '%{module_name}' have at least one published release?") % { module_name: @module_name }
else
message << _(" No releases matching '%{requested_version}' are available from %{source}") % { requested_version: @requested_version, source: @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 _("'%{module_name}' (%{version}) requested; installation conflict") % { module_name: @requested_module, version: @requested_version }
end
def multiline
message = []
message << _("Could not install module '%{module_name}' (%{version})") % { module_name: @requested_module, version: @requested_version }
if @dependency
message << _(" Dependency '%{name}' (%{version}) would overwrite %{directory}") % { name: @dependency[:name], version: v(@dependency[:version]), directory: @directory }
else
message << _(" Installation would overwrite %{directory}") % { directory: @directory }
end
if @metadata
message << _(" Currently, '%{current_name}' (%{current_version}) is installed to that directory") % { current_name: @metadata["name"], current_version: v(@metadata["version"]) }
end
if @dependency
# TRANSLATORS `puppet module install --ignore-dependencies` is a command line and should not be translated
message << _(" Use `puppet module install --ignore-dependencies` to install only this module")
else
# TRANSLATORS `puppet module install --force` is a command line and should not be translated
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..]
super _("'%{module_name}' (%{version}) requested; Invalid dependency cycle") % { module_name: @requested_module, version: v(@requested_version) }
end
def multiline
dependency_list = []
dependency_list << _("You specified '%{name}' (%{version})") % { name: @source.first[:name], version: v(@requested_version) }
dependency_list += @source[1..].map do |m|
# TRANSLATORS This message repeats as separate lines as a list under the heading "You specified '%{name}' (%{version})\n"
_("This depends on '%{name}' (%{version})") % { name: m[:name], version: v(m[:version]) }
end
message = []
message << _("Could not install module '%{module_name}' (%{version})") % { module_name: @requested_module, version: v(@requested_version) }
message << _(" No version of '%{module_name}' will satisfy dependencies") % { module_name: @module_name }
message << dependency_list.map { |s| " #{s}".join(",\n") }
# TRANSLATORS `puppet module install --force` is a command line and should not be translated
message << _(" Use `puppet module install --force` to install this module anyway")
message.join("\n")
end
end
class InvalidModuleNameError < ModuleToolError
def initialize(options)
@module_name = options[:module_name]
@suggestion = options[:suggestion]
@action = options[:action]
super _("Could not %{action} '%{module_name}', did you mean '%{suggestion}'?") % { action: @action, module_name: @module_name, suggestion: @suggestion }
end
def multiline
message = []
message << _("Could not %{action} module '%{module_name}'") % { action: @action, module_name: @module_name }
message << _(" The name '%{module_name}' is invalid") % { module_name: @module_name }
message << _(" Did you mean `puppet module %{action} %{suggestion}`?") % { action: @action, suggestion: @suggestion }
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") % { action: @action, module_name: @module_name }
end
def multiline
message = []
message << _("Could not %{action} module '%{module_name}'") % { action: @action, module_name: @module_name }
message << _(" Module '%{module_name}' is not installed") % { module_name: @module_name }
message += @suggestions.map do |suggestion|
# TRANSLATORS `puppet module %{action} %{suggestion}` is a command line and should not be translated
_(" You may have meant `puppet module %{action} %{suggestion}`") % { action: @action, suggestion: suggestion }
end
# TRANSLATORS `puppet module install` is a command line and should not be translated
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]
# TRANSLATORS "module path" refers to a set of directories where modules may be installed
super _("Could not %{action} '%{module_name}'; module appears in multiple places in the module path") % { action: @action, module_name: @module_name }
end
def multiline
message = []
message << _("Could not %{action} module '%{module_name}'") % { action: @action, module_name: @module_name }
message << _(" Module '%{module_name}' appears multiple places in the module path") % { module_name: @module_name }
message += @modules.map do |mod|
# TRANSLATORS This is repeats as separate lines as a list under "Module '%{module_name}' appears multiple places in the module path"
_(" '%{module_name}' (%{version}) was found in %{path}") % { module_name: @module_name, version: v(mod.version), path: mod.modulepath }
end
# TRANSLATORS `--modulepath` is command line option and should not be translated
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") % { action: @action, module_name: @module_name }
end
def multiline
message = []
message << _("Could not %{action} module '%{module_name}' (%{version})") % { action: @action, module_name: @module_name, version: vstring }
message << _(" Installed module has had changes made locally")
# TRANSLATORS `puppet module %{action} --ignore-changes` is a command line and should not be translated
message << _(" Use `puppet module %{action} --ignore-changes` to %{action} this module anyway") % { action: @action }
message.join("\n")
end
end
class InvalidModuleError < ModuleToolError
def initialize(name, options)
@name = name
@action = options[:action]
@error = options[:error]
super _("Could not %{action} '%{module_name}'; %{error}") % { action: @action, module_name: @name, error: @error.message }
end
def multiline
message = []
message << _("Could not %{action} module '%{module_name}'") % { action: @action, module_name: @name }
message << _(" Failure trying to parse metadata")
message << _(" Original message was: %{message}") % { message: @error.message }
message.join("\n")
end
end
end
|