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

getdozer / dozer / 5923958356

21 Aug 2023 08:34AM UTC coverage: 74.672%. First build
5923958356

Pull #1880

github

supergi0
Merge branch 'fix/include-disable-live-flag'
Pull Request #1880: chore: Add flag to disable live ui for local development

21 of 21 new or added lines in 3 files covered. (100.0%)

46083 of 61714 relevant lines covered (74.67%)

39663.02 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 graph;
4
mod server;
5
mod state;
6
mod watcher;
7
use std::sync::Arc;
8
mod helper;
9
use self::state::LiveState;
10
use crate::{cli::types::Live, live::server::LIVE_PORT, shutdown::ShutdownReceiver};
11
use dozer_types::{grpc_types::live::ConnectResponse, log::info};
12
mod progress;
13
pub use errors::LiveError;
14
use futures::stream::{AbortHandle, Abortable};
15
use tokio::runtime::Runtime;
16

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

×
26
    state.set_sender(sender.clone()).await;
×
27
    state.build(runtime.clone()).await?;
×
28

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

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

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

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

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

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

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

62
    Ok(())
×
63
}
×
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

© 2025 Coveralls, Inc