@@ -136,13 +136,19 @@ impl Cli {
136136 items. push ( Either :: Right ( item. referent . item . clone ( ) ) ) ;
137137 tags. push ( ( item. tag . clone ( ) , item. referent . item . clone ( ) ) ) ;
138138 }
139- handle. put_tag ( & item. tag , tg:: tag:: put:: Arg {
140- force : true ,
141- item : Either :: Right ( item. referent . item . clone ( ) ) ,
142- remote : None ,
143- } )
144- . await
145- . map_err ( |source| tg:: error!( !source, %tag = item. tag, %package = item. referent, "failed to put the tag" ) ) ?;
139+ handle
140+ . put_tag (
141+ & item. tag ,
142+ tg:: tag:: put:: Arg {
143+ force : true ,
144+ item : Either :: Right ( item. referent . item ( ) . clone ( ) ) ,
145+ remote : None ,
146+ } ,
147+ )
148+ . await
149+ . map_err (
150+ |source| tg:: error!( !source, %tag = item. tag, "failed to put local tag" ) ,
151+ ) ?;
146152 }
147153
148154 // Get the remote.
@@ -167,22 +173,25 @@ impl Cli {
167173 eprintln ! ( "pushed {} objects to remote {remote:?}" , output. objects) ;
168174
169175 // Put tags on the remote.
170- let count = tags. len ( ) ;
171- for ( tag, item) in tags {
172- eprintln ! ( "published {tag} {item}" ) ;
173- handle
174- . put_tag (
175- & tag,
176- tg:: tag:: put:: Arg {
177- item : Either :: Right ( item) ,
178- force : false ,
179- remote : Some ( remote. clone ( ) ) ,
180- } ,
181- )
182- . await
183- . map_err ( |source| tg:: error!( !source, %tag, "failed to put tag on remote" ) ) ?;
176+ let tags = tags
177+ . into_iter ( )
178+ . map ( |( tag, item) | tg:: tag:: post:: Item {
179+ tag,
180+ item : Either :: Right ( item) ,
181+ force : false ,
182+ } )
183+ . collect :: < Vec < _ > > ( ) ;
184+ handle
185+ . post_tags_batch ( tg:: tag:: post:: Arg {
186+ remote : Some ( remote. clone ( ) ) ,
187+ tags : tags. clone ( ) ,
188+ } )
189+ . await
190+ . map_err ( |source| tg:: error!( !source, "failed to publish tags to remote" ) ) ?;
191+ for item in & tags {
192+ eprintln ! ( "published {} {}" , item. tag, item. item) ;
184193 }
185- eprintln ! ( "published {count } packages to remote {remote:?}" ) ;
194+ eprintln ! ( "published {} packages to remote {remote:?}" , tags . len ( ) ) ;
186195 Ok ( ( ) )
187196 }
188197}
@@ -247,7 +256,9 @@ async fn try_get_package_tag(
247256 executable : Some ( executable) ,
248257 ..Default :: default ( )
249258 } ;
250- let output = tg:: run:: run ( handle, arg) . await ?;
259+ let Ok ( output) = tg:: run:: run ( handle, arg) . await else {
260+ return Ok ( None ) ;
261+ } ;
251262 let map = output
252263 . try_unwrap_map ( )
253264 . map_err ( |_| tg:: error!( "expected metadata to be a map" ) ) ?;
0 commit comments