defmodule GitHub.Repository.Ruleset do
@moduledoc """
Provides struct and type for RepositoryRuleset
"""
use GitHub.Encoder
@type t :: %__MODULE__{
__info__: map,
_links: map | nil,
bypass_actors: [GitHub.Repository.Ruleset.BypassActor.t()] | nil,
conditions: (map | GitHub.Repository.Ruleset.Conditions.t()) | nil,
created_at: String.t() | nil,
current_user_can_bypass: String.t() | nil,
enforcement: String.t(),
id: integer,
name: String.t(),
node_id: String.t() | nil,
rules:
[
GitHub.Repository.Rule.BranchNamePattern.t()
| GitHub.Repository.Rule.CommitAuthorEmailPattern.t()
| GitHub.Repository.Rule.CommitMessagePattern.t()
| GitHub.Repository.Rule.CommitterEmailPattern.t()
| GitHub.Repository.Rule.Creation.t()
| GitHub.Repository.Rule.Deletion.t()
| GitHub.Repository.Rule.NonFastForward.t()
| GitHub.Repository.Rule.PullRequest.t()
| GitHub.Repository.Rule.RequiredDeployments.t()
| GitHub.Repository.Rule.RequiredLinearHistory.t()
| GitHub.Repository.Rule.RequiredSignatures.t()
| GitHub.Repository.Rule.RequiredStatusChecks.t()
| GitHub.Repository.Rule.TagNamePattern.t()
| GitHub.Repository.Rule.Update.t()
]
| nil,
source: String.t(),
source_type: String.t() | nil,
target: String.t() | nil,
updated_at: String.t() | nil
}
defstruct [
:__info__,
:_links,
:bypass_actors,
:conditions,
:created_at,
:current_user_can_bypass,
:enforcement,
:id,
:name,
:node_id,
:rules,
:source,
:source_type,
:target,
:updated_at
]
@doc false
@spec __fields__(atom) :: keyword
def __fields__(type \\ :t)
def __fields__(:t) do
[
_links: :map,
bypass_actors: {:array, {GitHub.Repository.Ruleset.BypassActor, :t}},
conditions: {:union, [{GitHub.Repository.Ruleset.Conditions, :t}, :map]},
created_at: :string,
current_user_can_bypass: :string,
enforcement: :string,
id: :integer,
name: :string,
node_id: :string,
rules:
{:array,
{:union,
[
{GitHub.Repository.Rule.Creation, :t},
{GitHub.Repository.Rule.Update, :t},
{GitHub.Repository.Rule.Deletion, :t},
{GitHub.Repository.Rule.RequiredLinearHistory, :t},
{GitHub.Repository.Rule.RequiredDeployments, :t},
{GitHub.Repository.Rule.RequiredSignatures, :t},
{GitHub.Repository.Rule.PullRequest, :t},
{GitHub.Repository.Rule.RequiredStatusChecks, :t},
{GitHub.Repository.Rule.NonFastForward, :t},
{GitHub.Repository.Rule.CommitMessagePattern, :t},
{GitHub.Repository.Rule.CommitAuthorEmailPattern, :t},
{GitHub.Repository.Rule.CommitterEmailPattern, :t},
{GitHub.Repository.Rule.BranchNamePattern, :t},
{GitHub.Repository.Rule.TagNamePattern, :t}
]}},
source: :string,
source_type: :string,
target: :string,
updated_at: :string
]
end
end