ephemeris_forge_forgejo/config/
deploy_keys.rs1use std::collections::BTreeMap;
2
3use ephemeris_forge::Mode;
4use facet::Facet;
5
6#[derive(Clone, Debug, Eq, Facet, PartialEq)]
8#[facet(deny_unknown_fields)]
9pub struct DeployKey {
10 pub key: String,
12 pub read_only: bool,
14}
15
16#[derive(Clone, Debug, Eq, Facet, PartialEq)]
18#[facet(deny_unknown_fields)]
19pub struct DeployKeys {
20 pub mode: Mode,
22 pub keys: BTreeMap<String, DeployKey>,
24}
25
26impl DeployKey {
27 #[must_use]
32 pub(crate) fn identity(key: &str) -> (&str, &str) {
33 let mut fields = key.split_whitespace();
34 (
35 fields.next().unwrap_or_default(),
36 fields.next().unwrap_or_default(),
37 )
38 }
39
40 #[must_use]
42 pub fn matches(&self, reported: &str) -> bool {
43 Self::identity(&self.key) == Self::identity(reported)
44 }
45}