Skip to main content

ephemeris_forge_github/
config.rs

1//! The desired GitHub repository state.
2
3pub mod actions;
4mod autolinks;
5mod custom_properties;
6mod environments;
7mod error;
8mod pages;
9mod repository;
10mod rulesets;
11mod security;
12mod variables;
13mod webhooks;
14
15use std::collections::BTreeMap;
16
17use facet::Facet;
18
19pub use self::autolinks::{Autolink, Autolinks, EmptyKeyPrefix, KeyPrefix};
20pub use self::custom_properties::{PropertyValue, PropertyValueError};
21pub use self::environments::{
22    BranchPolicy, BranchPolicyType, DeploymentBranchPolicy, EmptyEnvironmentName, Environment,
23    EnvironmentName, EnvironmentReviewer, EnvironmentReviewerType, Environments,
24};
25pub use self::error::ConfigError;
26pub use self::pages::{BuildType, Pages, Source, SourcePath};
27pub use self::repository::{
28    MergeCommitMessage, MergeCommitTitle, PullRequestCreationPolicy, Repository,
29    SquashMergeCommitMessage, SquashMergeCommitTitle, Visibility,
30};
31pub use self::rulesets::{
32    ActorType, AlertsThreshold, BypassActor, BypassMode, CodeScanningRule, CodeScanningTool,
33    DeploymentsRule, DismissalActor, DismissalActorType, DismissalRestriction, EmptyRulesetName,
34    Enforcement, GroupingStrategy, MergeMethod, MergeQueueRule, PatternOperator, PatternRule,
35    PullRequestRule, QueueMergeMethod, RequiredCheck, Rules, Ruleset, RulesetName, Rulesets,
36    SecurityAlertsThreshold, StatusChecksRule, Target, UnknownTarget, UpdateRule, WorkflowRef,
37    WorkflowsRule,
38};
39pub(crate) use self::rulesets::{RuleDecoder, RuleRef};
40pub use self::security::{
41    BypassOptions, CodeScanning, Language, QuerySuite, Reviewer, ReviewerMode, ReviewerType,
42    RunnerType, Security, SetupState, Status, ThreatModel,
43};
44pub use self::variables::Variables;
45pub use self::webhooks::{EmptyWebhookUrl, Webhook, WebhookUrl, Webhooks};
46
47/// A configuration document that describes one GitHub repository.
48#[derive(Clone, Debug, Eq, Facet, PartialEq)]
49#[facet(deny_unknown_fields)]
50pub struct Config {
51    /// Settings for the repository itself.
52    pub repository: Repository,
53    /// Branch and tag rulesets, when configured.
54    pub rulesets: Option<Rulesets>,
55    /// Repository team grants, when configured.
56    pub access: Option<ephemeris_forge::Access<crate::Permission>>,
57    /// Security settings. Null fields are not managed.
58    pub security: Security,
59    /// The Pages site, when configured.
60    pub pages: Option<Pages>,
61    /// Deployment environments, when configured.
62    pub environments: Option<Environments>,
63    /// GitHub Actions settings, when configured.
64    pub actions: Option<actions::Actions>,
65    /// Autolink references, when configured.
66    pub autolinks: Option<Autolinks>,
67    /// Actions variables, when configured.
68    pub variables: Option<Variables>,
69    /// Repository labels, when configured.
70    pub labels: Option<ephemeris_forge::Labels<ephemeris_forge::Label>>,
71    /// Custom property values keyed by property name, when configured.
72    pub custom_properties: Option<BTreeMap<String, PropertyValue>>,
73    /// Repository webhooks, when configured.
74    pub webhooks: Option<Webhooks>,
75}