diff --git a/packages/perseus-cli/src/serve.rs b/packages/perseus-cli/src/serve.rs index b9ab6e00c2..093d6fc12e 100644 --- a/packages/perseus-cli/src/serve.rs +++ b/packages/perseus-cli/src/serve.rs @@ -69,24 +69,20 @@ fn build_server( let sb_spinner = spinners.insert(num_steps - 1, ProgressBar::new_spinner()); let sb_spinner = cfg_spinner(sb_spinner, &sb_msg); let sb_target = target; - let sb_thread = - spawn_thread(move || { - let (stdout, _stderr) = handle_exit_code!(run_stage( + let sb_thread = spawn_thread(move || { + let (stdout, _stderr) = handle_exit_code!(run_stage( vec![&format!( // This sets Cargo to tell us everything, including the executable path to the server - "{} build --message-format json {} {}", + "{} build --message-format json --features integration-{} {} --no-default-features {}", env::var("PERSEUS_CARGO_PATH").unwrap_or_else(|_| "cargo".to_string()), // Enable the appropriate integration - format!( - "--features integration-{} {} --no-default-features", - integration.to_string(), - // We'll also handle whether or not it's standalone because that goes under the `--features` flag - if is_standalone { - "--features standalone" - } else { - "" - } - ), + integration.to_string(), + // We'll also handle whether or not it's standalone because that goes under the `--features` flag + if is_standalone { + "--features standalone" + } else { + "" + }, if is_release { "--release" } else { "" }, )], &sb_target, @@ -94,37 +90,39 @@ fn build_server( &sb_msg )?); - let msgs: Vec<&str> = stdout.trim().split('\n').collect(); - // If we got to here, the exit code was 0 and everything should've worked - // The last message will just tell us that the build finished, the second-last one will tell us the executable path - let msg = msgs.get(msgs.len() - 2); - let msg = match msg { - // We'll parse it as a Serde `Value`, we don't need to know everything that's in there - Some(msg) => serde_json::from_str::(msg) - .map_err(|err| ExecutionError::GetServerExecutableFailed { source: err })?, - None => return Err(ExecutionError::ServerExectutableMsgNotFound), - }; - let server_exec_path = msg.get("executable"); - let server_exec_path = match server_exec_path { + let msgs: Vec<&str> = stdout.trim().split('\n').collect(); + // If we got to here, the exit code was 0 and everything should've worked + // The last message will just tell us that the build finished, the second-last one will tell us the executable path + let msg = msgs.get(msgs.len() - 2); + let msg = match msg { + // We'll parse it as a Serde `Value`, we don't need to know everything that's in there + Some(msg) => serde_json::from_str::(msg) + .map_err(|err| ExecutionError::GetServerExecutableFailed { source: err })?, + None => return Err(ExecutionError::ServerExectutableMsgNotFound), + }; + let server_exec_path = msg.get("executable"); + let server_exec_path = match server_exec_path { // We'll parse it as a Serde `Value`, we don't need to know everything that's in there Some(server_exec_path) => match server_exec_path.as_str() { Some(server_exec_path) => server_exec_path, - None => return Err(ExecutionError::ParseServerExecutableFailed { - err: "expected 'executable' field to be string".to_string() - }), + None => { + return Err(ExecutionError::ParseServerExecutableFailed { + err: "expected 'executable' field to be string".to_string(), + }) + } }, None => return Err(ExecutionError::ParseServerExecutableFailed { err: "expected 'executable' field in JSON map in second-last message, not present" - .to_string() + .to_string(), }), }; - // And now the main thread needs to know about this - let mut exec_val = exec.lock().unwrap(); - *exec_val = server_exec_path.to_string(); + // And now the main thread needs to know about this + let mut exec_val = exec.lock().unwrap(); + *exec_val = server_exec_path.to_string(); - Ok(0) - }); + Ok(0) + }); Ok(sb_thread) } diff --git a/packages/perseus-cli/src/snoop.rs b/packages/perseus-cli/src/snoop.rs index 2d6d2f9632..e41e483be0 100644 --- a/packages/perseus-cli/src/snoop.rs +++ b/packages/perseus-cli/src/snoop.rs @@ -43,13 +43,10 @@ pub fn snoop_server(dir: PathBuf, opts: SnoopServeOpts) -> Result( path = "index"; } // Remove `/` from the path by encoding it as a URL (that's what we store) and add the locale - let path_encoded = format!("{}-{}", locale, urlencoding::encode(path).to_string()); + let path_encoded = format!("{}-{}", locale, urlencoding::encode(path)); let path_with_locale = get_path_with_locale(path, &translator); // Only a single string of HTML is needed, and it will be overridden if necessary (priorities system) diff --git a/packages/perseus/src/shell.rs b/packages/perseus/src/shell.rs index ba16a797fa..10e26dc8c7 100644 --- a/packages/perseus/src/shell.rs +++ b/packages/perseus/src/shell.rs @@ -118,10 +118,7 @@ pub fn get_initial_state() -> InitialState { Err(err) => ErrorPageData { url: "[current]".to_string(), status: 500, - err: format!( - "couldn't serialize error from server: '{}'", - err.to_string() - ), + err: format!("couldn't serialize error from server: '{}'", err), }, }; InitialState::Error(err_page_data) @@ -407,7 +404,7 @@ pub async fn app_shell( "{}/.perseus/page/{}/{}.json?template_name={}&was_incremental_match={}", get_path_prefix_client(), locale, - path.to_string(), + path, template.get_path(), was_incremental_match );