diff --git a/cmd/soroban-cli/src/commands/contract/init.rs b/cmd/soroban-cli/src/commands/contract/init.rs index fe88dbb68..ef25c08ad 100644 --- a/cmd/soroban-cli/src/commands/contract/init.rs +++ b/cmd/soroban-cli/src/commands/contract/init.rs @@ -198,7 +198,8 @@ fn init( fn copy_template_files(project_path: &Path) -> Result<(), Error> { for item in TemplateFiles::iter() { - let to = project_path.join(item.as_ref()); + let mut to = project_path.join(item.as_ref()); + if file_exists(&to.to_string_lossy()) { println!( "ℹ️ Skipped creating {} as it already exists", @@ -224,6 +225,11 @@ fn copy_template_files(project_path: &Path) -> Result<(), Error> { e })?; + // We need to include the Cargo.toml file as Cargo.text in the template so that it will be included the package. This is making sure that the Cargo file is written as Cargo.toml in the new project. This is a workaround for this issue: https://github.com/rust-lang/cargo/issues/8597. + if item == "Cargo.toml.removeextension" { + to = project_path.join("Cargo.toml"); + } + println!("➕ Writing {}", &to.to_string_lossy()); write(&to, file_contents).map_err(|e| { eprintln!("Error writing file: {to:?}"); diff --git a/cmd/soroban-cli/src/utils/contract-init-template/Cargo.toml b/cmd/soroban-cli/src/utils/contract-init-template/Cargo.toml.removeextension similarity index 100% rename from cmd/soroban-cli/src/utils/contract-init-template/Cargo.toml rename to cmd/soroban-cli/src/utils/contract-init-template/Cargo.toml.removeextension