Skip to content

Commit

Permalink
Use new FE template url
Browse files Browse the repository at this point in the history
  • Loading branch information
elizabethengelman committed Jan 29, 2024
1 parent ee0f82a commit 6fac693
Showing 1 changed file with 42 additions and 8 deletions.
50 changes: 42 additions & 8 deletions cmd/soroban-cli/src/commands/contract/init.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use std::sync::atomic::AtomicBool;
use toml_edit::{Document, Formatted, InlineTable, TomlError, Value};

const SOROBAN_EXAMPLES_URL: &str = "https://github.com/stellar/soroban-examples.git";
const FRONTEND_ASTRO_TEMPLATE_URL: &str = "https://github.com/AhaLabs/soroban-init-template";
const FRONTEND_ASTRO_TEMPLATE_URL: &str = "https://github.com/loambuild/soroban-frontend-template";
const GITHUB_API_URL: &str =
"https://api.github.com/repos/stellar/soroban-examples/git/trees/main?recursive=1";

Expand Down Expand Up @@ -95,6 +95,9 @@ pub enum Error {

#[error("Failed to fetch example contracts")]
ExampleContractFetchError(#[from] Box<ureq::Error>),

#[error("Failed to parse package.json file: {0}")]
JsonParseError(#[from] serde_json::Error),
}

impl Cmd {
Expand Down Expand Up @@ -174,12 +177,9 @@ fn copy_contents(from: &Path, to: &Path) -> Result<(), Error> {
copy_contents(&path, &new_path)?;
} else {
if file_exists(&new_path.to_string_lossy()) {
//if file is .gitignore, merge the files
//if file is .gitignore, overwrite the file with a new .gitignore file
if path.to_string_lossy().contains(".gitignore") {
let new_contents = read_to_string(&new_path)?;
let old_contents = read_to_string(&path)?;
let merged_contents = format!("{new_contents}\n{old_contents}");
std::fs::write(&new_path, merged_contents)?;
std::fs::copy(&path, &new_path)?;
continue;
}

Expand Down Expand Up @@ -277,13 +277,47 @@ fn copy_frontend_files(from: &Path, to: &Path, template: &FrontendTemplate) {
println!("ℹ️ Initializing with {template:?} frontend template");
match template {
FrontendTemplate::Astro => {
let from_template_path = from.join("astro");
let _ = copy_contents(&from_template_path, to);
let _ = copy_contents(&from, to);
let _ = edit_package_json_files(to);
}
FrontendTemplate::None => {}
}
}

fn edit_package_json_files(project_path: &Path) -> Result<(), Error> {
//TODO: handle unwraps
let package_name = project_path.file_name().unwrap().to_str().unwrap();

edit_package_json(project_path, package_name)?;
edit_package_lock_json(project_path, package_name)
}

fn edit_package_lock_json(project_path: &Path, package_name: &str) -> Result<(), Error> {
let package_lock_json_path = project_path.join("package-lock.json");
let package_lock_json_str = read_to_string(&package_lock_json_path)?;

let mut doc: serde_json::Value = serde_json::from_str(&package_lock_json_str)?;

doc["name"] = serde_json::json!(package_name);

std::fs::write(&package_lock_json_path, doc.to_string())?;

Ok(())
}

fn edit_package_json(project_path: &Path, package_name: &str) -> Result<(), Error> {
let package_json_path = project_path.join("package.json");
let package_json_str = read_to_string(&package_json_path)?;

let mut doc: serde_json::Value = serde_json::from_str(&package_json_str)?;

doc["name"] = serde_json::json!(package_name);

std::fs::write(&package_json_path, doc.to_string())?;

Ok(())
}

#[cfg(test)]
mod tests {
use std::{fs::read_to_string, path::PathBuf};
Expand Down

0 comments on commit 6fac693

Please sign in to comment.