| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -846,54 +846,61 @@ fn parse_manifests( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//     }
 | 
					 | 
					 | 
					 | 
					//     }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// }
 | 
					 | 
					 | 
					 | 
					// }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// conditional dep tables aren't handled right:
 | 
					 | 
					 | 
					 | 
					/// edit registry deps to point to the destination registry.
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//
 | 
					 | 
					 | 
					 | 
					///
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// [target.'cfg(not(target_env = "msvc"))'.dependencies]
 | 
					 | 
					 | 
					 | 
					/// NOTE: recursive traversing of the toml is needed to handle things
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// dep-one = { version = "0.1.0", registry = "old-registry" }
 | 
					 | 
					 | 
					 | 
					/// like conditional deps blocks like:
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					//
 | 
					 | 
					 | 
					 | 
					///
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					fn edit_dep_registries( | 
					 | 
					 | 
					 | 
					/// ```toml,ignore
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    dep_key: &str, | 
					 | 
					 | 
					 | 
					/// [target.'cfg(not(target_env = "msvc"))'.dependencies]
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					/// dep-one = { version = "0.1.0", registry = "old-registry" }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					/// ```
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					fn edit_deps( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    manifest: &mut toml_edit::Document, | 
					 | 
					 | 
					 | 
					    manifest: &mut toml_edit::Document, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    config: &Config, | 
					 | 
					 | 
					 | 
					    config: &Config, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					) -> Result<(), Error> { | 
					 | 
					 | 
					 | 
					) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    let src_registry_name = config.src.registry_name.as_str(); | 
					 | 
					 | 
					 | 
					    use toml_edit::{visit_mut::VisitMut, KeyMut, Item, TableLike}; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    let dst_registry_name = config.dst.registry_name.as_str(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    let src_index_url = config.src.index_url.as_str(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    let dst_index_url = config.dst.index_url.as_str(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    let dep_key_ends_with = format!(".{dep_key}"); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    let it = manifest.iter_mut() | 
					 | 
					 | 
					 | 
					    struct DepsVisitor<'a>(&'a Config); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        .filter(|(k, v)| { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            k == dep_key || k.ends_with(&dep_key_ends_with) | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    for (outer_k, outer_v) in it { | 
					 | 
					 | 
					 | 
					    impl<'a> VisitMut for DepsVisitor<'a> { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        let Some(deps) = outer_v.as_table_like_mut() else { | 
					 | 
					 | 
					 | 
					        fn visit_table_like_mut(&mut self, dep: &mut dyn TableLike) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            anyhow::bail!("failed to cast deps item as table"); | 
					 | 
					 | 
					 | 
					            let config = self.0; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }; | 
					 | 
					 | 
					 | 
					            let src_registry_name = config.src.registry_name.as_str(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        for (k, v) in deps.iter_mut() { | 
					 | 
					 | 
					 | 
					            let dst_registry_name = config.dst.registry_name.as_str(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            let Some(t) = v.as_table_like_mut() else { continue }; | 
					 | 
					 | 
					 | 
					            let src_index_url = config.src.index_url.as_str(); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            let dst_index_url = config.dst.index_url.as_str(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            let mut edited = false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if let Some(registry_item) = t.get_mut("registry") { | 
					 | 
					 | 
					 | 
					            if let Some(registry_item) = dep.get_mut("registry") { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if registry_item.as_str().unwrap_or("") == src_registry_name { | 
					 | 
					 | 
					 | 
					                if registry_item.as_str().unwrap_or("") == src_registry_name { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    trace!(dep_name = ?k, %dep_key, ?src_registry_name, ?dst_registry_name, "modifying registry in Cargo.toml"); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    *registry_item = toml_edit::value(dst_registry_name); | 
					 | 
					 | 
					 | 
					                    *registry_item = toml_edit::value(dst_registry_name); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    edited = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if let Some(registry_index_item) = t.get_mut("registry-index") { | 
					 | 
					 | 
					 | 
					            if let Some(registry_index_item) = dep.get_mut("registry-index") { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if registry_index_item.as_str().unwrap_or("") == src_index_url { | 
					 | 
					 | 
					 | 
					                if registry_index_item.as_str().unwrap_or("") == src_index_url { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    trace!(dep_name = ?k, %dep_key, ?src_index_url, ?dst_index_url, "modifying registry-index in Cargo.toml"); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    *registry_index_item = toml_edit::value(dst_index_url); | 
					 | 
					 | 
					 | 
					                    *registry_index_item = toml_edit::value(dst_index_url); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    edited = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            if !edited { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                for (_, v) in dep.iter_mut() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    if let Some(t) = v.as_table_like_mut() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        toml_edit::visit_mut::visit_table_like_mut(self, t); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    Ok(()) | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    let mut visitor = DepsVisitor(config); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    visitor.visit_document_mut(&mut *manifest); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					fn edit_publish_registry_if_present( | 
					 | 
					 | 
					 | 
					fn edit_publish_registry( | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    manifest: &mut toml_edit::Document, | 
					 | 
					 | 
					 | 
					    manifest: &mut toml_edit::Document, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    src_registry_name: &str, | 
					 | 
					 | 
					 | 
					    src_registry_name: &str, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    dst_registry_name: &str, | 
					 | 
					 | 
					 | 
					    dst_registry_name: &str, | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -925,11 +932,8 @@ fn prepare_source_dir_for_publish(config: &Config, meta: &mut VersionMeta) -> Re | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    let source_dir = meta.source_dir(); | 
					 | 
					 | 
					 | 
					    let source_dir = meta.source_dir(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    let mut modified_manifest = meta.manifest_files.cargo_toml_orig.parse::<toml_edit::Document>()?; | 
					 | 
					 | 
					 | 
					    let mut modified_manifest = meta.manifest_files.cargo_toml_orig.parse::<toml_edit::Document>()?; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    edit_dep_registries("dependencies", &mut modified_manifest, &config)?; | 
					 | 
					 | 
					 | 
					    edit_deps(&mut modified_manifest, &config); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    edit_dep_registries("dev-dependencies", &mut modified_manifest, &config)?; | 
					 | 
					 | 
					 | 
					    edit_publish_registry(&mut modified_manifest, &config.src.registry_name, &config.dst.registry_name)?; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    edit_dep_registries("build-dependencies", &mut modified_manifest, &config)?; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    edit_publish_registry_if_present(&mut modified_manifest, &config.src.registry_name, &config.dst.registry_name)?; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    // write modified manifest over Cargo.toml (leaves Cargo.toml.orig as is)
 | 
					 | 
					 | 
					 | 
					    // write modified manifest over Cargo.toml (leaves Cargo.toml.orig as is)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    let modified_manifest_toml = modified_manifest.to_string(); | 
					 | 
					 | 
					 | 
					    let modified_manifest_toml = modified_manifest.to_string(); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |