Radish alpha
r
rad:zwTxygwuz5LDGBq255RA2CbNGrz8
Radicle CI broker
Radicle
Git
feat: allow config file to set description in HTML report
Lars Wirzenius committed 6 months ago
commit c459b6763a1e0c526c9c920bda813a324f2cc5cc
parent a73a1c7
4 files changed +35 -1
modified src/bin/cib.rs
@@ -236,6 +236,9 @@ impl QueuedCmd {
            db,
            true,
        );
+
        if let Some(desc) = config.description() {
+
            page.set_description(desc);
+
        }
        if let Some(dirname) = config.report_dir() {
            page.set_output_dir(dirname);
        }
@@ -281,6 +284,9 @@ impl ProcessEventsCmd {
            db,
            false,
        );
+
        if let Some(desc) = config.description() {
+
            page.set_description(desc);
+
        }
        if let Some(dirname) = config.report_dir() {
            page.set_output_dir(dirname);
        }
modified src/bin/cibtoolcmd/report.rs
@@ -9,6 +9,11 @@ pub struct ReportCmd {
    /// it is not created automatically.
    #[clap(long)]
    output_dir: PathBuf,
+

+
    /// HTML snippet to be inserted at top of generated front page,
+
    /// for describing the CI node instance.
+
    #[clap(long)]
+
    description: Option<String>,
}

impl Leaf for ReportCmd {
@@ -24,6 +29,9 @@ impl Leaf for ReportCmd {
            db,
            true,
        );
+
        if let Some(desc) = &self.description {
+
            page.set_description(desc);
+
        }
        page.set_output_dir(&self.output_dir);

        let thread = start_thread(page);
modified src/config.rs
@@ -52,6 +52,8 @@ pub struct Config {

    #[serde(default)]
    concurrent_adapters: Option<usize>,
+

+
    description: Option<String>,
}

fn default_max_run_time() -> Duration {
@@ -91,6 +93,10 @@ impl Config {
        Ok(())
    }

+
    pub fn description(&self) -> Option<&str> {
+
        self.description.as_deref()
+
    }
+

    pub fn report_dir(&self) -> Option<&Path> {
        self.report_dir.as_deref()
    }
modified src/pages.rs
@@ -88,6 +88,7 @@ struct PageData {
    broker_event_counter: usize,
    latest_broker_event: Option<CiEvent>,
    latest_ci_run: Option<Run>,
+
    desc_snippet: Option<String>,
}

impl PageData {
@@ -103,9 +104,15 @@ impl PageData {

        doc.push_to_body(Element::new(Tag::H1).with_text(&title));

+
        if let Some(snippet) = &self.desc_snippet {
+
            let mut desc = Element::new(Tag::Div);
+
            desc.push_html(snippet);
+
            doc.push_to_body(desc);
+
        }
+

+
        doc.push_to_body(Element::new(Tag::H2).with_text("RSS feeds"));
        doc.push_to_body(
            Element::new(Tag::P)
-
                .with_text("RSS feeds: ")
                .with_child(
                    Element::new(Tag::A)
                        .with_text("all")
@@ -824,6 +831,7 @@ struct PageArgs {
    profile: Profile,
    db: Db,
    once: bool,
+
    desc_snippet: Option<String>,
}

impl StatusPage {
@@ -840,10 +848,15 @@ impl StatusPage {
                profile,
                db,
                once,
+
                desc_snippet: None,
            },
        }
    }

+
    pub fn set_description(&mut self, desc: &str) {
+
        self.args.desc_snippet = Some(desc.to_string());
+
    }
+

    fn update_loop(&mut self) -> Result<(), PageError> {
        'processing_loop: loop {
            self.update_and_write()?;
@@ -914,6 +927,7 @@ impl StatusPage {
                    broker_event_counter: 0,
                    latest_broker_event: None,
                    latest_ci_run: None,
+
                    desc_snippet: self.args.desc_snippet.clone(),
                };

                let nameless = String::from("nameless repo");