@@ -111,13 +111,9 @@ pub fn run(opts: Opts) {
111
111
} ) ;
112
112
let client = client. clone ( ) ;
113
113
let base_config = base_config. clone ( ) ;
114
- let handle = thread:: spawn ( move || {
114
+ let handle = thread:: spawn :: < _ , anyhow :: Result < ( ) > > ( move || {
115
115
println ! ( "[{}-{}] Rendering README..." , krate_name, version. num) ;
116
- let readme = get_readme ( base_config. uploader ( ) , & client, & version, & krate_name) ;
117
- if readme. is_err ( ) {
118
- return ;
119
- }
120
- let readme = readme. unwrap ( ) ;
116
+ let readme = get_readme ( base_config. uploader ( ) , & client, & version, & krate_name) ?;
121
117
let content_length = readme. len ( ) as u64 ;
122
118
let content = std:: io:: Cursor :: new ( readme) ;
123
119
let readme_path = format ! ( "readmes/{0}/{0}-{1}.html" , krate_name, version. num) ;
@@ -126,6 +122,7 @@ pub fn run(opts: Opts) {
126
122
header:: CACHE_CONTROL ,
127
123
header:: HeaderValue :: from_static ( CACHE_CONTROL_README ) ,
128
124
) ;
125
+
129
126
base_config
130
127
. uploader ( )
131
128
. upload (
@@ -136,18 +133,17 @@ pub fn run(opts: Opts) {
136
133
"text/html" ,
137
134
extra_headers,
138
135
)
139
- . unwrap_or_else ( |_| {
140
- panic ! (
141
- "[{}-{}] Couldn't upload file to S3" ,
142
- krate_name, version. num
143
- )
144
- } ) ;
136
+ . context ( "Failed to upload rendered README file to S3" ) ?;
137
+
138
+ Ok ( ( ) )
145
139
} ) ;
146
140
tasks. push ( handle) ;
147
141
}
148
142
for handle in tasks {
149
- if let Err ( err) = handle. join ( ) {
150
- println ! ( "Thread panicked: {:?}" , err) ;
143
+ match handle. join ( ) {
144
+ Err ( err) => println ! ( "Thread panicked: {:?}" , err) ,
145
+ Ok ( Err ( err) ) => println ! ( "Thread failed: {:?}" , err) ,
146
+ _ => { }
151
147
}
152
148
}
153
149
}
0 commit comments