• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

getdozer / dozer / 5957916370

24 Aug 2023 12:27AM UTC coverage: 75.783% (-0.08%) from 75.86%
5957916370

push

github

web-flow
fix: introduce build states and fix inconsistencies (#1902)

* chore: return if state cant be sent

* chore: remove broadcasting state when stopped

* chore: send build message

* chore: fix build

84 of 84 new or added lines in 7 files covered. (100.0%)

46996 of 62014 relevant lines covered (75.78%)

73508.46 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/dozer-cli/src/live/mod.rs
1
mod downloader;
2
mod errors;
3
mod server;
4
mod state;
5
mod watcher;
6
use self::state::LiveState;
7
use crate::{cli::types::Live, live::server::LIVE_PORT, shutdown::ShutdownReceiver};
8
use dozer_types::{grpc_types::live::ConnectResponse, log::info};
9
use std::sync::Arc;
10
mod progress;
11
pub use errors::LiveError;
12
use futures::stream::{AbortHandle, Abortable};
13
use tokio::runtime::Runtime;
14

15
const WEB_PORT: u16 = 3000;
16
pub async fn start_live_server(
×
17
    runtime: &Arc<Runtime>,
×
18
    shutdown: ShutdownReceiver,
×
19
    live_flags: Live,
×
20
) -> Result<(), LiveError> {
×
21
    let (sender, receiver) = tokio::sync::broadcast::channel::<ConnectResponse>(100);
×
22
    let state = Arc::new(LiveState::new());
×
23

×
24
    state.set_sender(sender.clone()).await;
×
25
    // Ignore if build fails
×
26
    let _ = state.build(runtime.clone()).await;
×
27

×
28
    downloader::fetch_latest_dozer_explorer_code().await?;
×
29

×
30
    if !live_flags.disable_live_ui {
×
31
        let react_app_server =
×
32
            downloader::start_react_app().map_err(LiveError::CannotStartUiServer)?;
×
33
        tokio::spawn(react_app_server);
×
34
        let browser_url = format!("http://localhost:{}", WEB_PORT);
×
35

×
36
        if webbrowser::open(&browser_url).is_err() {
×
37
            info!("Failed to open browser. ");
×
38
        }
×
39
    }
×
40

×
41
    let state2 = state.clone();
×
42

×
43
    info!("Starting live server on port : {}", LIVE_PORT);
×
44

×
45
    let rshudown = shutdown.clone();
×
46
    tokio::spawn(async {
×
47
        let (abort_handle, abort_registration) = AbortHandle::new_pair();
×
48
        tokio::spawn(async move {
×
49
            rshudown.create_shutdown_future().await;
×
50
            abort_handle.abort();
×
51
        });
×
52
        let res = match Abortable::new(server::serve(receiver, state2), abort_registration).await {
×
53
            Ok(result) => result.map_err(LiveError::Transport),
×
54
            Err(_) => Ok(()),
×
55
        };
×
56
        res.unwrap();
×
57
    });
×
58

×
59
    watcher::watch(runtime, state.clone(), shutdown).await?;
×
60

×
61
    Ok(())
×
62
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc