MCPcopy Create free account
hub / github.com/Wulf/create-rust-app / start

Function start

crates/create-rust-app/src/dev/frontend_dev_server.rs:13–51  ·  view source on GitHub ↗
(
    project_dir: &'static str,
    dev_port: u16,
    mut signal_rx: Receiver<DevServerEvent>,
    _dev_server_events_s: Sender<DevServerEvent>,
    state: Arc<Mutex<DevState>>,
)

Source from the content-addressed store, hash-verified

11use super::{check_exit, DevServerEvent, DevState};
12
13pub async fn start(
14 project_dir: &'static str,
15 dev_port: u16,
16 mut signal_rx: Receiver<DevServerEvent>,
17 _dev_server_events_s: Sender<DevServerEvent>,
18 state: Arc<Mutex<DevState>>,
19) {
20 println!("Starting frontend server @ http://localhost:21012/");
21 let mut m = state.lock().await;
22 m.frontend_server_running = true;
23 drop(m);
24 let mut child_process = Command::new(NPM)
25 .args(["run", "start:dev"])
26 .env("DEV_SERVER_PORT", dev_port.to_string())
27 .current_dir(PathBuf::from_iter([project_dir, "frontend"]))
28 .spawn()
29 .unwrap();
30
31 // tokio::fs::create_dir_all(PathBuf::from(".cargo/tmp")).await.unwrap();
32 // tokio::fs::write(
33 // PathBuf::from(".cargo/tmp/frontend_pid.txt"),
34 // child_process.id().unwrap_or_default().to_string(),
35 // ).await.unwrap();
36
37 while let Ok(event) = signal_rx.recv().await {
38 if matches!(event, DevServerEvent::SHUTDOWN) {
39 println!("Shutting down frontend server...");
40 if child_process.id().is_some() {
41 child_process.kill().await.unwrap();
42 }
43 let mut m = state.lock().await;
44 m.frontend_server_running = false;
45 check_exit(&m);
46 drop(m);
47 break;
48 }
49 }
50 println!("frontend server stopped.");
51}

Callers

nothing calls this directly

Calls 2

check_exitFunction · 0.85
to_stringMethod · 0.80

Tested by

no test coverage detected