blob: ee4c2477d2d639ce689b83118604174150175065 (
plain)
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
|
class UsageError < RuntimeError; end
class FormulaUnspecifiedError < UsageError; end
class KegUnspecifiedError < UsageError; end
class MultipleVersionsInstalledError < RuntimeError
attr :name
def initialize name
@name = name
super "#{name} has multiple installed versions"
end
end
class NotAKegError < RuntimeError; end
class NoSuchKegError < RuntimeError
attr :name
def initialize name
@name = name
super "No such keg: #{HOMEBREW_CELLAR}/#{name}"
end
end
class FormulaUnavailableError < RuntimeError
attr :name
def initialize name
@name = name
super "No available formula for #{name}"
end
end
module Homebrew
class InstallationError < RuntimeError
attr :formula
def initialize formula, message=""
super message
@formula = formula
end
end
end
class FormulaAlreadyInstalledError < Homebrew::InstallationError
def message
"Formula already installed: #{formula}"
end
end
class FormulaInstallationAlreadyAttemptedError < Homebrew::InstallationError
def message
"Formula installation already attempted: #{formula}"
end
end
class UnsatisfiedExternalDependencyError < Homebrew::InstallationError
attr :type
def initialize formula, type
@type = type
super formula, get_message(formula)
end
def get_message formula
<<-EOS.undent
Unsatisfied external dependency: #{formula}
Homebrew does not provide #{type.to_s.capitalize} dependencies, #{tool} does:
#{command_line} #{formula}
EOS
end
private
def tool
case type
when :python then 'easy_install'
when :ruby, :jruby, :rbx then 'rubygems'
when :perl then 'cpan'
when :node then 'npm'
when :chicken then 'chicken-install'
end
end
def command_line
case type
when :python
"easy_install"
when :ruby
"gem install"
when :perl
"cpan -i"
when :jruby
"jruby -S gem install"
when :rbx
"rbx gem install"
when :node
"npm install"
when :chicken
"chicken-install"
end
end
end
class BuildError < Homebrew::InstallationError
attr :exit_status
attr :command
attr :env
def initialize formula, cmd, args, es
@command = cmd
@env = ENV.to_hash
@exit_status = es.exitstatus rescue 1
args = args.map{ |arg| arg.to_s.gsub " ", "\\ " }.join(" ")
super formula, "Failed executing: #{command} #{args}"
end
def was_running_configure?
@command == './configure'
end
end
# raised in CurlDownloadStrategy.fetch
class CurlDownloadStrategyError < RuntimeError
end
# raised by safe_system in utils.rb
class ErrorDuringExecution < RuntimeError
end
|