1pub 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#[derive(Clone, Debug, Eq, Facet, PartialEq)]
49#[facet(deny_unknown_fields)]
50pub struct Config {
51 pub repository: Repository,
53 pub rulesets: Option<Rulesets>,
55 pub access: Option<ephemeris_forge::Access<crate::Permission>>,
57 pub security: Security,
59 pub pages: Option<Pages>,
61 pub environments: Option<Environments>,
63 pub actions: Option<actions::Actions>,
65 pub autolinks: Option<Autolinks>,
67 pub variables: Option<Variables>,
69 pub labels: Option<ephemeris_forge::Labels<ephemeris_forge::Label>>,
71 pub custom_properties: Option<BTreeMap<String, PropertyValue>>,
73 pub webhooks: Option<Webhooks>,
75}