Crate repomon_config

Source
Expand description

Configuration management for repomon.

§Examples

§Read from TOML string

    let test_toml = r#"[[branch.blah]]
    name = "origin/master"
    interval = "1m"

    [[branch.repomon]]
    name = "origin/master"
    interval = "1m"

    [[branch.repomon]]
    name = "origin/feature/testing"
    interval = "1m"

    [[branch.repomon-config]]
    name = "origin/master"
    interval = "1m"
    "#;

    // Serialize the TOML above into a `Branches` struct.
    let mut reader = Cursor::new(test_toml);
    let branches = read_toml(&mut reader)?;

    // Check the `Branches` struct.
    let branch_map = branches.branch_map();
    assert_eq!(branch_map.keys().len(), 3);
    assert!(branch_map.contains_key("repomon"));
    assert!(branch_map.contains_key("repomon-config"));
    assert!(branch_map.contains_key("blah"));

    // Check we have the right number of branch definitions per repo.
    let mut branches = branch_map.get("repomon").ok_or("invalid key")?;
    assert_eq!(branches.len(), 2);
    branches = branch_map.get("repomon-config").ok_or("invalid key")?;
    assert_eq!(branches.len(), 1);
    branches = branch_map.get("blah").ok_or("invalid key")?;
    assert_eq!(branches.len(), 1);

§Write to TOML string

      // Setup the `Branches` struct.
      let mut master: Branch = Default::default();
      master.set_name("origin/master".to_string());
      master.set_interval("1m".to_string());

      let mut feature_testing: Branch = Default::default();
      feature_testing.set_name("origin/feature/testing".to_string());
      feature_testing.set_interval("1m".to_string());

      let repomon_branches = vec![master.clone(), feature_testing];
      let blah_branches = vec![master.clone()];
      let repomon_config_branches = vec![master];

      let mut branch_map = BTreeMap::new();
      branch_map.insert("repomon".to_string(), repomon_branches);
      branch_map.insert("repomon-config".to_string(), repomon_config_branches);
      branch_map.insert("blah".to_string(), blah_branches);

      let mut branches: Branches = Default::default();
      branches.set_branch_map(branch_map);

      // Write the TOML to the given buf.
      let mut buf = [0; 5000];

      // Wrapped to drop mutable borrow.
      {
        let mut writer = Cursor::new(&mut buf[..]);
        write_toml(&branches, &mut writer)?;
      }

      // Check that the result is the same as the TOML above.
      assert_eq!(TEST_TOML, String::from_utf8_lossy(&buf));

Structs§

  • A branch to monitor for changes.
  • A map of repo name to branch definitions.
  • The Error type.
  • Struct sent via tx to clients;

Enums§

Functions§

  • Read TOML from the given reader and deserialize into a Branches struct.
  • Write TOML serialized from the Branches struct to the given writer.