@@ -232,6 +232,7 @@ pub async fn package(
232232 directory : impl AsRef < Path > ,
233233 dry_run : bool ,
234234 version : Option < Version > ,
235+ preserve_mtime : bool ,
235236) -> miette:: Result < ( ) > {
236237 let mut manifest = Manifest :: read ( ) . await ?;
237238 let store = PackageStore :: current ( ) . await ?;
@@ -248,7 +249,7 @@ pub async fn package(
248249 store. populate ( pkg) . await ?;
249250 }
250251
251- let package = store. release ( & manifest) . await ?;
252+ let package = store. release ( & manifest, preserve_mtime ) . await ?;
252253
253254 if dry_run {
254255 return Ok ( ( ) ) ;
@@ -275,6 +276,7 @@ pub async fn publish(
275276 #[ cfg( feature = "git" ) ] allow_dirty : bool ,
276277 dry_run : bool ,
277278 version : Option < Version > ,
279+ preserve_mtime : bool ,
278280) -> miette:: Result < ( ) > {
279281 #[ cfg( feature = "git" ) ]
280282 async fn git_statuses ( ) -> miette:: Result < Vec < String > > {
@@ -345,7 +347,7 @@ pub async fn publish(
345347 store. populate ( pkg) . await ?;
346348 }
347349
348- let package = store. release ( & manifest) . await ?;
350+ let package = store. release ( & manifest, preserve_mtime ) . await ?;
349351
350352 if dry_run {
351353 tracing:: warn!( ":: aborting upload due to dry run" ) ;
@@ -356,7 +358,9 @@ pub async fn publish(
356358}
357359
358360/// Installs dependencies
359- pub async fn install ( ) -> miette:: Result < ( ) > {
361+ ///
362+ /// if [preserve_mtime] is true, local dependencies will keep their modification time
363+ pub async fn install ( preserve_mtime : bool ) -> miette:: Result < ( ) > {
360364 let manifest = Manifest :: read ( ) . await ?;
361365 let lockfile = Lockfile :: read_or_default ( ) . await ?;
362366 let store = PackageStore :: current ( ) . await ?;
@@ -371,10 +375,15 @@ pub async fn install() -> miette::Result<()> {
371375 tracing:: info!( ":: installed {}@{}" , pkg. name, pkg. version) ;
372376 }
373377
374- let dependency_graph =
375- DependencyGraph :: from_manifest ( & manifest, & lockfile, & credentials. into ( ) , & cache)
376- . await
377- . wrap_err ( miette ! ( "dependency resolution failed" ) ) ?;
378+ let dependency_graph = DependencyGraph :: from_manifest (
379+ & manifest,
380+ & lockfile,
381+ & credentials. into ( ) ,
382+ & cache,
383+ preserve_mtime,
384+ )
385+ . await
386+ . wrap_err ( miette ! ( "dependency resolution failed" ) ) ?;
378387
379388 let mut locked = Vec :: new ( ) ;
380389
0 commit comments