File tree Expand file tree Collapse file tree 3 files changed +19
-4
lines changed Expand file tree Collapse file tree 3 files changed +19
-4
lines changed Original file line number Diff line number Diff line change @@ -855,7 +855,7 @@ describe "install" do
855
855
with_shard(metadata) do
856
856
ex = expect_raises(FailedCommand ) { run " shards install --no-color" }
857
857
ex.stdout.should contain <<-ERROR
858
- E: Could not find executable "nonexistent"
858
+ E: Failed to install `executable_missing`: Could not find executable "nonexistent"
859
859
ERROR
860
860
end
861
861
end
Original file line number Diff line number Diff line change @@ -176,12 +176,19 @@ end
176
176
begin
177
177
Shards .run
178
178
rescue ex : OptionParser ::InvalidOption
179
- Shards ::Log .fatal { ex.message }
179
+ Shards ::Log .fatal(exception: ex) { ex.message }
180
+ Shards ::Log .trace { ex.inspect_with_backtrace }
180
181
exit 1
181
182
rescue ex : Shards ::ParseError
182
183
ex.to_s(STDERR )
183
184
exit 1
185
+ rescue ex : Shards ::Package ::Error
186
+ package = ex.package
187
+ Shards ::Log .error(exception: ex) { " Failed to install `#{ package.name } `: #{ ex.message } " }
188
+ Shards ::Log .trace { ex.inspect_with_backtrace }
189
+ exit 1
184
190
rescue ex : Shards ::Error
185
- Shards ::Log .error { ex.message }
191
+ Shards ::Log .error(exception: ex) { ex.message }
192
+ Shards ::Log .trace { ex.inspect_with_backtrace }
186
193
exit 1
187
194
end
Original file line number Diff line number Diff line change @@ -3,6 +3,14 @@ require "./helpers"
3
3
4
4
module Shards
5
5
class Package
6
+ class Error < Shards::Error
7
+ getter package
8
+
9
+ def initialize (message, @package : Package )
10
+ super message
11
+ end
12
+ end
13
+
6
14
getter name : String
7
15
getter resolver : Resolver
8
16
getter version : Version
@@ -114,7 +122,7 @@ module Shards
114
122
spec.executables.each do |name |
115
123
exe_name = find_executable_file(Path [install_path], name)
116
124
unless exe_name
117
- raise Shards ::Error .new(" Could not find executable #{ name.inspect } " )
125
+ raise Shards ::Package :: Error .new(" Could not find executable #{ name.inspect } " , package: self )
118
126
end
119
127
Log .debug { " Install #{ exe_name } " }
120
128
source = File .join(install_path, exe_name)
You can’t perform that action at this time.
0 commit comments