{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.CodeBuild.Types.Project
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CodeBuild.Types.Project where

import Amazonka.CodeBuild.Types.LogsConfig
import Amazonka.CodeBuild.Types.ProjectArtifacts
import Amazonka.CodeBuild.Types.ProjectBadge
import Amazonka.CodeBuild.Types.ProjectBuildBatchConfig
import Amazonka.CodeBuild.Types.ProjectCache
import Amazonka.CodeBuild.Types.ProjectEnvironment
import Amazonka.CodeBuild.Types.ProjectFileSystemLocation
import Amazonka.CodeBuild.Types.ProjectSource
import Amazonka.CodeBuild.Types.ProjectSourceVersion
import Amazonka.CodeBuild.Types.ProjectVisibilityType
import Amazonka.CodeBuild.Types.Tag
import Amazonka.CodeBuild.Types.VpcConfig
import Amazonka.CodeBuild.Types.Webhook
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | Information about a build project.
--
-- /See:/ 'newProject' smart constructor.
data Project = Project'
  { -- | The Amazon Resource Name (ARN) of the build project.
    Project -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | Information about the build output artifacts for the build project.
    Project -> Maybe ProjectArtifacts
artifacts :: Prelude.Maybe ProjectArtifacts,
    -- | Information about the build badge for the build project.
    Project -> Maybe ProjectBadge
badge :: Prelude.Maybe ProjectBadge,
    -- | A ProjectBuildBatchConfig object that defines the batch build options
    -- for the project.
    Project -> Maybe ProjectBuildBatchConfig
buildBatchConfig :: Prelude.Maybe ProjectBuildBatchConfig,
    -- | Information about the cache for the build project.
    Project -> Maybe ProjectCache
cache :: Prelude.Maybe ProjectCache,
    -- | The maximum number of concurrent builds that are allowed for this
    -- project.
    --
    -- New builds are only started if the current number of builds is less than
    -- or equal to this limit. If the current build count meets this limit, new
    -- builds are throttled and are not run.
    Project -> Maybe Int
concurrentBuildLimit :: Prelude.Maybe Prelude.Int,
    -- | When the build project was created, expressed in Unix time format.
    Project -> Maybe POSIX
created :: Prelude.Maybe Data.POSIX,
    -- | A description that makes the build project easy to identify.
    Project -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The Key Management Service customer master key (CMK) to be used for
    -- encrypting the build output artifacts.
    --
    -- You can use a cross-account KMS key to encrypt the build output
    -- artifacts if your service role has permission to that key.
    --
    -- You can specify either the Amazon Resource Name (ARN) of the CMK or, if
    -- available, the CMK\'s alias (using the format @alias\/\<alias-name>@).
    -- If you don\'t specify a value, CodeBuild uses the managed CMK for Amazon
    -- Simple Storage Service (Amazon S3).
    Project -> Maybe Text
encryptionKey :: Prelude.Maybe Prelude.Text,
    -- | Information about the build environment for this build project.
    Project -> Maybe ProjectEnvironment
environment :: Prelude.Maybe ProjectEnvironment,
    -- | An array of @ProjectFileSystemLocation@ objects for a CodeBuild build
    -- project. A @ProjectFileSystemLocation@ object specifies the
    -- @identifier@, @location@, @mountOptions@, @mountPoint@, and @type@ of a
    -- file system created using Amazon Elastic File System.
    Project -> Maybe [ProjectFileSystemLocation]
fileSystemLocations :: Prelude.Maybe [ProjectFileSystemLocation],
    -- | When the build project\'s settings were last modified, expressed in Unix
    -- time format.
    Project -> Maybe POSIX
lastModified :: Prelude.Maybe Data.POSIX,
    -- | Information about logs for the build project. A project can create logs
    -- in CloudWatch Logs, an S3 bucket, or both.
    Project -> Maybe LogsConfig
logsConfig :: Prelude.Maybe LogsConfig,
    -- | The name of the build project.
    Project -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    Project -> Maybe ProjectVisibilityType
projectVisibility :: Prelude.Maybe ProjectVisibilityType,
    -- | Contains the project identifier used with the public build APIs.
    Project -> Maybe Text
publicProjectAlias :: Prelude.Maybe Prelude.Text,
    -- | The number of minutes a build is allowed to be queued before it times
    -- out.
    Project -> Maybe Natural
queuedTimeoutInMinutes :: Prelude.Maybe Prelude.Natural,
    -- | The ARN of the IAM role that enables CodeBuild to access the CloudWatch
    -- Logs and Amazon S3 artifacts for the project\'s builds.
    Project -> Maybe Text
resourceAccessRole :: Prelude.Maybe Prelude.Text,
    -- | An array of @ProjectArtifacts@ objects.
    Project -> Maybe [ProjectArtifacts]
secondaryArtifacts :: Prelude.Maybe [ProjectArtifacts],
    -- | An array of @ProjectSourceVersion@ objects. If @secondarySourceVersions@
    -- is specified at the build level, then they take over these
    -- @secondarySourceVersions@ (at the project level).
    Project -> Maybe [ProjectSourceVersion]
secondarySourceVersions :: Prelude.Maybe [ProjectSourceVersion],
    -- | An array of @ProjectSource@ objects.
    Project -> Maybe [ProjectSource]
secondarySources :: Prelude.Maybe [ProjectSource],
    -- | The ARN of the IAM role that enables CodeBuild to interact with
    -- dependent Amazon Web Services services on behalf of the Amazon Web
    -- Services account.
    Project -> Maybe Text
serviceRole :: Prelude.Maybe Prelude.Text,
    -- | Information about the build input source code for this build project.
    Project -> Maybe ProjectSource
source :: Prelude.Maybe ProjectSource,
    -- | A version of the build input to be built for this project. If not
    -- specified, the latest version is used. If specified, it must be one of:
    --
    -- -   For CodeCommit: the commit ID, branch, or Git tag to use.
    --
    -- -   For GitHub: the commit ID, pull request ID, branch name, or tag name
    --     that corresponds to the version of the source code you want to
    --     build. If a pull request ID is specified, it must use the format
    --     @pr\/pull-request-ID@ (for example @pr\/25@). If a branch name is
    --     specified, the branch\'s HEAD commit ID is used. If not specified,
    --     the default branch\'s HEAD commit ID is used.
    --
    -- -   For Bitbucket: the commit ID, branch name, or tag name that
    --     corresponds to the version of the source code you want to build. If
    --     a branch name is specified, the branch\'s HEAD commit ID is used. If
    --     not specified, the default branch\'s HEAD commit ID is used.
    --
    -- -   For Amazon S3: the version ID of the object that represents the
    --     build input ZIP file to use.
    --
    -- If @sourceVersion@ is specified at the build level, then that version
    -- takes precedence over this @sourceVersion@ (at the project level).
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/codebuild/latest/userguide/sample-source-version.html Source Version Sample with CodeBuild>
    -- in the /CodeBuild User Guide/.
    Project -> Maybe Text
sourceVersion :: Prelude.Maybe Prelude.Text,
    -- | A list of tag key and value pairs associated with this build project.
    --
    -- These tags are available for use by Amazon Web Services services that
    -- support CodeBuild build project tags.
    Project -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | How long, in minutes, from 5 to 480 (8 hours), for CodeBuild to wait
    -- before timing out any related build that did not get marked as
    -- completed. The default is 60 minutes.
    Project -> Maybe Natural
timeoutInMinutes :: Prelude.Maybe Prelude.Natural,
    -- | Information about the VPC configuration that CodeBuild accesses.
    Project -> Maybe VpcConfig
vpcConfig :: Prelude.Maybe VpcConfig,
    -- | Information about a webhook that connects repository events to a build
    -- project in CodeBuild.
    Project -> Maybe Webhook
webhook :: Prelude.Maybe Webhook
  }
  deriving (Project -> Project -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Project -> Project -> Bool
$c/= :: Project -> Project -> Bool
== :: Project -> Project -> Bool
$c== :: Project -> Project -> Bool
Prelude.Eq, ReadPrec [Project]
ReadPrec Project
Int -> ReadS Project
ReadS [Project]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Project]
$creadListPrec :: ReadPrec [Project]
readPrec :: ReadPrec Project
$creadPrec :: ReadPrec Project
readList :: ReadS [Project]
$creadList :: ReadS [Project]
readsPrec :: Int -> ReadS Project
$creadsPrec :: Int -> ReadS Project
Prelude.Read, Int -> Project -> ShowS
[Project] -> ShowS
Project -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Project] -> ShowS
$cshowList :: [Project] -> ShowS
show :: Project -> String
$cshow :: Project -> String
showsPrec :: Int -> Project -> ShowS
$cshowsPrec :: Int -> Project -> ShowS
Prelude.Show, forall x. Rep Project x -> Project
forall x. Project -> Rep Project x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Project x -> Project
$cfrom :: forall x. Project -> Rep Project x
Prelude.Generic)

-- |
-- Create a value of 'Project' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'arn', 'project_arn' - The Amazon Resource Name (ARN) of the build project.
--
-- 'artifacts', 'project_artifacts' - Information about the build output artifacts for the build project.
--
-- 'badge', 'project_badge' - Information about the build badge for the build project.
--
-- 'buildBatchConfig', 'project_buildBatchConfig' - A ProjectBuildBatchConfig object that defines the batch build options
-- for the project.
--
-- 'cache', 'project_cache' - Information about the cache for the build project.
--
-- 'concurrentBuildLimit', 'project_concurrentBuildLimit' - The maximum number of concurrent builds that are allowed for this
-- project.
--
-- New builds are only started if the current number of builds is less than
-- or equal to this limit. If the current build count meets this limit, new
-- builds are throttled and are not run.
--
-- 'created', 'project_created' - When the build project was created, expressed in Unix time format.
--
-- 'description', 'project_description' - A description that makes the build project easy to identify.
--
-- 'encryptionKey', 'project_encryptionKey' - The Key Management Service customer master key (CMK) to be used for
-- encrypting the build output artifacts.
--
-- You can use a cross-account KMS key to encrypt the build output
-- artifacts if your service role has permission to that key.
--
-- You can specify either the Amazon Resource Name (ARN) of the CMK or, if
-- available, the CMK\'s alias (using the format @alias\/\<alias-name>@).
-- If you don\'t specify a value, CodeBuild uses the managed CMK for Amazon
-- Simple Storage Service (Amazon S3).
--
-- 'environment', 'project_environment' - Information about the build environment for this build project.
--
-- 'fileSystemLocations', 'project_fileSystemLocations' - An array of @ProjectFileSystemLocation@ objects for a CodeBuild build
-- project. A @ProjectFileSystemLocation@ object specifies the
-- @identifier@, @location@, @mountOptions@, @mountPoint@, and @type@ of a
-- file system created using Amazon Elastic File System.
--
-- 'lastModified', 'project_lastModified' - When the build project\'s settings were last modified, expressed in Unix
-- time format.
--
-- 'logsConfig', 'project_logsConfig' - Information about logs for the build project. A project can create logs
-- in CloudWatch Logs, an S3 bucket, or both.
--
-- 'name', 'project_name' - The name of the build project.
--
-- 'projectVisibility', 'project_projectVisibility' - Undocumented member.
--
-- 'publicProjectAlias', 'project_publicProjectAlias' - Contains the project identifier used with the public build APIs.
--
-- 'queuedTimeoutInMinutes', 'project_queuedTimeoutInMinutes' - The number of minutes a build is allowed to be queued before it times
-- out.
--
-- 'resourceAccessRole', 'project_resourceAccessRole' - The ARN of the IAM role that enables CodeBuild to access the CloudWatch
-- Logs and Amazon S3 artifacts for the project\'s builds.
--
-- 'secondaryArtifacts', 'project_secondaryArtifacts' - An array of @ProjectArtifacts@ objects.
--
-- 'secondarySourceVersions', 'project_secondarySourceVersions' - An array of @ProjectSourceVersion@ objects. If @secondarySourceVersions@
-- is specified at the build level, then they take over these
-- @secondarySourceVersions@ (at the project level).
--
-- 'secondarySources', 'project_secondarySources' - An array of @ProjectSource@ objects.
--
-- 'serviceRole', 'project_serviceRole' - The ARN of the IAM role that enables CodeBuild to interact with
-- dependent Amazon Web Services services on behalf of the Amazon Web
-- Services account.
--
-- 'source', 'project_source' - Information about the build input source code for this build project.
--
-- 'sourceVersion', 'project_sourceVersion' - A version of the build input to be built for this project. If not
-- specified, the latest version is used. If specified, it must be one of:
--
-- -   For CodeCommit: the commit ID, branch, or Git tag to use.
--
-- -   For GitHub: the commit ID, pull request ID, branch name, or tag name
--     that corresponds to the version of the source code you want to
--     build. If a pull request ID is specified, it must use the format
--     @pr\/pull-request-ID@ (for example @pr\/25@). If a branch name is
--     specified, the branch\'s HEAD commit ID is used. If not specified,
--     the default branch\'s HEAD commit ID is used.
--
-- -   For Bitbucket: the commit ID, branch name, or tag name that
--     corresponds to the version of the source code you want to build. If
--     a branch name is specified, the branch\'s HEAD commit ID is used. If
--     not specified, the default branch\'s HEAD commit ID is used.
--
-- -   For Amazon S3: the version ID of the object that represents the
--     build input ZIP file to use.
--
-- If @sourceVersion@ is specified at the build level, then that version
-- takes precedence over this @sourceVersion@ (at the project level).
--
-- For more information, see
-- <https://docs.aws.amazon.com/codebuild/latest/userguide/sample-source-version.html Source Version Sample with CodeBuild>
-- in the /CodeBuild User Guide/.
--
-- 'tags', 'project_tags' - A list of tag key and value pairs associated with this build project.
--
-- These tags are available for use by Amazon Web Services services that
-- support CodeBuild build project tags.
--
-- 'timeoutInMinutes', 'project_timeoutInMinutes' - How long, in minutes, from 5 to 480 (8 hours), for CodeBuild to wait
-- before timing out any related build that did not get marked as
-- completed. The default is 60 minutes.
--
-- 'vpcConfig', 'project_vpcConfig' - Information about the VPC configuration that CodeBuild accesses.
--
-- 'webhook', 'project_webhook' - Information about a webhook that connects repository events to a build
-- project in CodeBuild.
newProject ::
  Project
newProject :: Project
newProject =
  Project'
    { $sel:arn:Project' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:artifacts:Project' :: Maybe ProjectArtifacts
artifacts = forall a. Maybe a
Prelude.Nothing,
      $sel:badge:Project' :: Maybe ProjectBadge
badge = forall a. Maybe a
Prelude.Nothing,
      $sel:buildBatchConfig:Project' :: Maybe ProjectBuildBatchConfig
buildBatchConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:cache:Project' :: Maybe ProjectCache
cache = forall a. Maybe a
Prelude.Nothing,
      $sel:concurrentBuildLimit:Project' :: Maybe Int
concurrentBuildLimit = forall a. Maybe a
Prelude.Nothing,
      $sel:created:Project' :: Maybe POSIX
created = forall a. Maybe a
Prelude.Nothing,
      $sel:description:Project' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionKey:Project' :: Maybe Text
encryptionKey = forall a. Maybe a
Prelude.Nothing,
      $sel:environment:Project' :: Maybe ProjectEnvironment
environment = forall a. Maybe a
Prelude.Nothing,
      $sel:fileSystemLocations:Project' :: Maybe [ProjectFileSystemLocation]
fileSystemLocations = forall a. Maybe a
Prelude.Nothing,
      $sel:lastModified:Project' :: Maybe POSIX
lastModified = forall a. Maybe a
Prelude.Nothing,
      $sel:logsConfig:Project' :: Maybe LogsConfig
logsConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:name:Project' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:projectVisibility:Project' :: Maybe ProjectVisibilityType
projectVisibility = forall a. Maybe a
Prelude.Nothing,
      $sel:publicProjectAlias:Project' :: Maybe Text
publicProjectAlias = forall a. Maybe a
Prelude.Nothing,
      $sel:queuedTimeoutInMinutes:Project' :: Maybe Natural
queuedTimeoutInMinutes = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceAccessRole:Project' :: Maybe Text
resourceAccessRole = forall a. Maybe a
Prelude.Nothing,
      $sel:secondaryArtifacts:Project' :: Maybe [ProjectArtifacts]
secondaryArtifacts = forall a. Maybe a
Prelude.Nothing,
      $sel:secondarySourceVersions:Project' :: Maybe [ProjectSourceVersion]
secondarySourceVersions = forall a. Maybe a
Prelude.Nothing,
      $sel:secondarySources:Project' :: Maybe [ProjectSource]
secondarySources = forall a. Maybe a
Prelude.Nothing,
      $sel:serviceRole:Project' :: Maybe Text
serviceRole = forall a. Maybe a
Prelude.Nothing,
      $sel:source:Project' :: Maybe ProjectSource
source = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceVersion:Project' :: Maybe Text
sourceVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:Project' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:timeoutInMinutes:Project' :: Maybe Natural
timeoutInMinutes = forall a. Maybe a
Prelude.Nothing,
      $sel:vpcConfig:Project' :: Maybe VpcConfig
vpcConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:webhook:Project' :: Maybe Webhook
webhook = forall a. Maybe a
Prelude.Nothing
    }

-- | The Amazon Resource Name (ARN) of the build project.
project_arn :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_arn :: Lens' Project (Maybe Text)
project_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe Text
arn :: Maybe Text
$sel:arn:Project' :: Project -> Maybe Text
arn} -> Maybe Text
arn) (\s :: Project
s@Project' {} Maybe Text
a -> Project
s {$sel:arn:Project' :: Maybe Text
arn = Maybe Text
a} :: Project)

-- | Information about the build output artifacts for the build project.
project_artifacts :: Lens.Lens' Project (Prelude.Maybe ProjectArtifacts)
project_artifacts :: Lens' Project (Maybe ProjectArtifacts)
project_artifacts = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe ProjectArtifacts
artifacts :: Maybe ProjectArtifacts
$sel:artifacts:Project' :: Project -> Maybe ProjectArtifacts
artifacts} -> Maybe ProjectArtifacts
artifacts) (\s :: Project
s@Project' {} Maybe ProjectArtifacts
a -> Project
s {$sel:artifacts:Project' :: Maybe ProjectArtifacts
artifacts = Maybe ProjectArtifacts
a} :: Project)

-- | Information about the build badge for the build project.
project_badge :: Lens.Lens' Project (Prelude.Maybe ProjectBadge)
project_badge :: Lens' Project (Maybe ProjectBadge)
project_badge = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe ProjectBadge
badge :: Maybe ProjectBadge
$sel:badge:Project' :: Project -> Maybe ProjectBadge
badge} -> Maybe ProjectBadge
badge) (\s :: Project
s@Project' {} Maybe ProjectBadge
a -> Project
s {$sel:badge:Project' :: Maybe ProjectBadge
badge = Maybe ProjectBadge
a} :: Project)

-- | A ProjectBuildBatchConfig object that defines the batch build options
-- for the project.
project_buildBatchConfig :: Lens.Lens' Project (Prelude.Maybe ProjectBuildBatchConfig)
project_buildBatchConfig :: Lens' Project (Maybe ProjectBuildBatchConfig)
project_buildBatchConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe ProjectBuildBatchConfig
buildBatchConfig :: Maybe ProjectBuildBatchConfig
$sel:buildBatchConfig:Project' :: Project -> Maybe ProjectBuildBatchConfig
buildBatchConfig} -> Maybe ProjectBuildBatchConfig
buildBatchConfig) (\s :: Project
s@Project' {} Maybe ProjectBuildBatchConfig
a -> Project
s {$sel:buildBatchConfig:Project' :: Maybe ProjectBuildBatchConfig
buildBatchConfig = Maybe ProjectBuildBatchConfig
a} :: Project)

-- | Information about the cache for the build project.
project_cache :: Lens.Lens' Project (Prelude.Maybe ProjectCache)
project_cache :: Lens' Project (Maybe ProjectCache)
project_cache = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe ProjectCache
cache :: Maybe ProjectCache
$sel:cache:Project' :: Project -> Maybe ProjectCache
cache} -> Maybe ProjectCache
cache) (\s :: Project
s@Project' {} Maybe ProjectCache
a -> Project
s {$sel:cache:Project' :: Maybe ProjectCache
cache = Maybe ProjectCache
a} :: Project)

-- | The maximum number of concurrent builds that are allowed for this
-- project.
--
-- New builds are only started if the current number of builds is less than
-- or equal to this limit. If the current build count meets this limit, new
-- builds are throttled and are not run.
project_concurrentBuildLimit :: Lens.Lens' Project (Prelude.Maybe Prelude.Int)
project_concurrentBuildLimit :: Lens' Project (Maybe Int)
project_concurrentBuildLimit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe Int
concurrentBuildLimit :: Maybe Int
$sel:concurrentBuildLimit:Project' :: Project -> Maybe Int
concurrentBuildLimit} -> Maybe Int
concurrentBuildLimit) (\s :: Project
s@Project' {} Maybe Int
a -> Project
s {$sel:concurrentBuildLimit:Project' :: Maybe Int
concurrentBuildLimit = Maybe Int
a} :: Project)

-- | When the build project was created, expressed in Unix time format.
project_created :: Lens.Lens' Project (Prelude.Maybe Prelude.UTCTime)
project_created :: Lens' Project (Maybe UTCTime)
project_created = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe POSIX
created :: Maybe POSIX
$sel:created:Project' :: Project -> Maybe POSIX
created} -> Maybe POSIX
created) (\s :: Project
s@Project' {} Maybe POSIX
a -> Project
s {$sel:created:Project' :: Maybe POSIX
created = Maybe POSIX
a} :: Project) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | A description that makes the build project easy to identify.
project_description :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_description :: Lens' Project (Maybe Text)
project_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe Text
description :: Maybe Text
$sel:description:Project' :: Project -> Maybe Text
description} -> Maybe Text
description) (\s :: Project
s@Project' {} Maybe Text
a -> Project
s {$sel:description:Project' :: Maybe Text
description = Maybe Text
a} :: Project)

-- | The Key Management Service customer master key (CMK) to be used for
-- encrypting the build output artifacts.
--
-- You can use a cross-account KMS key to encrypt the build output
-- artifacts if your service role has permission to that key.
--
-- You can specify either the Amazon Resource Name (ARN) of the CMK or, if
-- available, the CMK\'s alias (using the format @alias\/\<alias-name>@).
-- If you don\'t specify a value, CodeBuild uses the managed CMK for Amazon
-- Simple Storage Service (Amazon S3).
project_encryptionKey :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_encryptionKey :: Lens' Project (Maybe Text)
project_encryptionKey = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe Text
encryptionKey :: Maybe Text
$sel:encryptionKey:Project' :: Project -> Maybe Text
encryptionKey} -> Maybe Text
encryptionKey) (\s :: Project
s@Project' {} Maybe Text
a -> Project
s {$sel:encryptionKey:Project' :: Maybe Text
encryptionKey = Maybe Text
a} :: Project)

-- | Information about the build environment for this build project.
project_environment :: Lens.Lens' Project (Prelude.Maybe ProjectEnvironment)
project_environment :: Lens' Project (Maybe ProjectEnvironment)
project_environment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe ProjectEnvironment
environment :: Maybe ProjectEnvironment
$sel:environment:Project' :: Project -> Maybe ProjectEnvironment
environment} -> Maybe ProjectEnvironment
environment) (\s :: Project
s@Project' {} Maybe ProjectEnvironment
a -> Project
s {$sel:environment:Project' :: Maybe ProjectEnvironment
environment = Maybe ProjectEnvironment
a} :: Project)

-- | An array of @ProjectFileSystemLocation@ objects for a CodeBuild build
-- project. A @ProjectFileSystemLocation@ object specifies the
-- @identifier@, @location@, @mountOptions@, @mountPoint@, and @type@ of a
-- file system created using Amazon Elastic File System.
project_fileSystemLocations :: Lens.Lens' Project (Prelude.Maybe [ProjectFileSystemLocation])
project_fileSystemLocations :: Lens' Project (Maybe [ProjectFileSystemLocation])
project_fileSystemLocations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe [ProjectFileSystemLocation]
fileSystemLocations :: Maybe [ProjectFileSystemLocation]
$sel:fileSystemLocations:Project' :: Project -> Maybe [ProjectFileSystemLocation]
fileSystemLocations} -> Maybe [ProjectFileSystemLocation]
fileSystemLocations) (\s :: Project
s@Project' {} Maybe [ProjectFileSystemLocation]
a -> Project
s {$sel:fileSystemLocations:Project' :: Maybe [ProjectFileSystemLocation]
fileSystemLocations = Maybe [ProjectFileSystemLocation]
a} :: Project) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | When the build project\'s settings were last modified, expressed in Unix
-- time format.
project_lastModified :: Lens.Lens' Project (Prelude.Maybe Prelude.UTCTime)
project_lastModified :: Lens' Project (Maybe UTCTime)
project_lastModified = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe POSIX
lastModified :: Maybe POSIX
$sel:lastModified:Project' :: Project -> Maybe POSIX
lastModified} -> Maybe POSIX
lastModified) (\s :: Project
s@Project' {} Maybe POSIX
a -> Project
s {$sel:lastModified:Project' :: Maybe POSIX
lastModified = Maybe POSIX
a} :: Project) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Information about logs for the build project. A project can create logs
-- in CloudWatch Logs, an S3 bucket, or both.
project_logsConfig :: Lens.Lens' Project (Prelude.Maybe LogsConfig)
project_logsConfig :: Lens' Project (Maybe LogsConfig)
project_logsConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe LogsConfig
logsConfig :: Maybe LogsConfig
$sel:logsConfig:Project' :: Project -> Maybe LogsConfig
logsConfig} -> Maybe LogsConfig
logsConfig) (\s :: Project
s@Project' {} Maybe LogsConfig
a -> Project
s {$sel:logsConfig:Project' :: Maybe LogsConfig
logsConfig = Maybe LogsConfig
a} :: Project)

-- | The name of the build project.
project_name :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_name :: Lens' Project (Maybe Text)
project_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe Text
name :: Maybe Text
$sel:name:Project' :: Project -> Maybe Text
name} -> Maybe Text
name) (\s :: Project
s@Project' {} Maybe Text
a -> Project
s {$sel:name:Project' :: Maybe Text
name = Maybe Text
a} :: Project)

-- | Undocumented member.
project_projectVisibility :: Lens.Lens' Project (Prelude.Maybe ProjectVisibilityType)
project_projectVisibility :: Lens' Project (Maybe ProjectVisibilityType)
project_projectVisibility = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe ProjectVisibilityType
projectVisibility :: Maybe ProjectVisibilityType
$sel:projectVisibility:Project' :: Project -> Maybe ProjectVisibilityType
projectVisibility} -> Maybe ProjectVisibilityType
projectVisibility) (\s :: Project
s@Project' {} Maybe ProjectVisibilityType
a -> Project
s {$sel:projectVisibility:Project' :: Maybe ProjectVisibilityType
projectVisibility = Maybe ProjectVisibilityType
a} :: Project)

-- | Contains the project identifier used with the public build APIs.
project_publicProjectAlias :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_publicProjectAlias :: Lens' Project (Maybe Text)
project_publicProjectAlias = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe Text
publicProjectAlias :: Maybe Text
$sel:publicProjectAlias:Project' :: Project -> Maybe Text
publicProjectAlias} -> Maybe Text
publicProjectAlias) (\s :: Project
s@Project' {} Maybe Text
a -> Project
s {$sel:publicProjectAlias:Project' :: Maybe Text
publicProjectAlias = Maybe Text
a} :: Project)

-- | The number of minutes a build is allowed to be queued before it times
-- out.
project_queuedTimeoutInMinutes :: Lens.Lens' Project (Prelude.Maybe Prelude.Natural)
project_queuedTimeoutInMinutes :: Lens' Project (Maybe Natural)
project_queuedTimeoutInMinutes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe Natural
queuedTimeoutInMinutes :: Maybe Natural
$sel:queuedTimeoutInMinutes:Project' :: Project -> Maybe Natural
queuedTimeoutInMinutes} -> Maybe Natural
queuedTimeoutInMinutes) (\s :: Project
s@Project' {} Maybe Natural
a -> Project
s {$sel:queuedTimeoutInMinutes:Project' :: Maybe Natural
queuedTimeoutInMinutes = Maybe Natural
a} :: Project)

-- | The ARN of the IAM role that enables CodeBuild to access the CloudWatch
-- Logs and Amazon S3 artifacts for the project\'s builds.
project_resourceAccessRole :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_resourceAccessRole :: Lens' Project (Maybe Text)
project_resourceAccessRole = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe Text
resourceAccessRole :: Maybe Text
$sel:resourceAccessRole:Project' :: Project -> Maybe Text
resourceAccessRole} -> Maybe Text
resourceAccessRole) (\s :: Project
s@Project' {} Maybe Text
a -> Project
s {$sel:resourceAccessRole:Project' :: Maybe Text
resourceAccessRole = Maybe Text
a} :: Project)

-- | An array of @ProjectArtifacts@ objects.
project_secondaryArtifacts :: Lens.Lens' Project (Prelude.Maybe [ProjectArtifacts])
project_secondaryArtifacts :: Lens' Project (Maybe [ProjectArtifacts])
project_secondaryArtifacts = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe [ProjectArtifacts]
secondaryArtifacts :: Maybe [ProjectArtifacts]
$sel:secondaryArtifacts:Project' :: Project -> Maybe [ProjectArtifacts]
secondaryArtifacts} -> Maybe [ProjectArtifacts]
secondaryArtifacts) (\s :: Project
s@Project' {} Maybe [ProjectArtifacts]
a -> Project
s {$sel:secondaryArtifacts:Project' :: Maybe [ProjectArtifacts]
secondaryArtifacts = Maybe [ProjectArtifacts]
a} :: Project) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | An array of @ProjectSourceVersion@ objects. If @secondarySourceVersions@
-- is specified at the build level, then they take over these
-- @secondarySourceVersions@ (at the project level).
project_secondarySourceVersions :: Lens.Lens' Project (Prelude.Maybe [ProjectSourceVersion])
project_secondarySourceVersions :: Lens' Project (Maybe [ProjectSourceVersion])
project_secondarySourceVersions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe [ProjectSourceVersion]
secondarySourceVersions :: Maybe [ProjectSourceVersion]
$sel:secondarySourceVersions:Project' :: Project -> Maybe [ProjectSourceVersion]
secondarySourceVersions} -> Maybe [ProjectSourceVersion]
secondarySourceVersions) (\s :: Project
s@Project' {} Maybe [ProjectSourceVersion]
a -> Project
s {$sel:secondarySourceVersions:Project' :: Maybe [ProjectSourceVersion]
secondarySourceVersions = Maybe [ProjectSourceVersion]
a} :: Project) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | An array of @ProjectSource@ objects.
project_secondarySources :: Lens.Lens' Project (Prelude.Maybe [ProjectSource])
project_secondarySources :: Lens' Project (Maybe [ProjectSource])
project_secondarySources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe [ProjectSource]
secondarySources :: Maybe [ProjectSource]
$sel:secondarySources:Project' :: Project -> Maybe [ProjectSource]
secondarySources} -> Maybe [ProjectSource]
secondarySources) (\s :: Project
s@Project' {} Maybe [ProjectSource]
a -> Project
s {$sel:secondarySources:Project' :: Maybe [ProjectSource]
secondarySources = Maybe [ProjectSource]
a} :: Project) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The ARN of the IAM role that enables CodeBuild to interact with
-- dependent Amazon Web Services services on behalf of the Amazon Web
-- Services account.
project_serviceRole :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_serviceRole :: Lens' Project (Maybe Text)
project_serviceRole = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe Text
serviceRole :: Maybe Text
$sel:serviceRole:Project' :: Project -> Maybe Text
serviceRole} -> Maybe Text
serviceRole) (\s :: Project
s@Project' {} Maybe Text
a -> Project
s {$sel:serviceRole:Project' :: Maybe Text
serviceRole = Maybe Text
a} :: Project)

-- | Information about the build input source code for this build project.
project_source :: Lens.Lens' Project (Prelude.Maybe ProjectSource)
project_source :: Lens' Project (Maybe ProjectSource)
project_source = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe ProjectSource
source :: Maybe ProjectSource
$sel:source:Project' :: Project -> Maybe ProjectSource
source} -> Maybe ProjectSource
source) (\s :: Project
s@Project' {} Maybe ProjectSource
a -> Project
s {$sel:source:Project' :: Maybe ProjectSource
source = Maybe ProjectSource
a} :: Project)

-- | A version of the build input to be built for this project. If not
-- specified, the latest version is used. If specified, it must be one of:
--
-- -   For CodeCommit: the commit ID, branch, or Git tag to use.
--
-- -   For GitHub: the commit ID, pull request ID, branch name, or tag name
--     that corresponds to the version of the source code you want to
--     build. If a pull request ID is specified, it must use the format
--     @pr\/pull-request-ID@ (for example @pr\/25@). If a branch name is
--     specified, the branch\'s HEAD commit ID is used. If not specified,
--     the default branch\'s HEAD commit ID is used.
--
-- -   For Bitbucket: the commit ID, branch name, or tag name that
--     corresponds to the version of the source code you want to build. If
--     a branch name is specified, the branch\'s HEAD commit ID is used. If
--     not specified, the default branch\'s HEAD commit ID is used.
--
-- -   For Amazon S3: the version ID of the object that represents the
--     build input ZIP file to use.
--
-- If @sourceVersion@ is specified at the build level, then that version
-- takes precedence over this @sourceVersion@ (at the project level).
--
-- For more information, see
-- <https://docs.aws.amazon.com/codebuild/latest/userguide/sample-source-version.html Source Version Sample with CodeBuild>
-- in the /CodeBuild User Guide/.
project_sourceVersion :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_sourceVersion :: Lens' Project (Maybe Text)
project_sourceVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe Text
sourceVersion :: Maybe Text
$sel:sourceVersion:Project' :: Project -> Maybe Text
sourceVersion} -> Maybe Text
sourceVersion) (\s :: Project
s@Project' {} Maybe Text
a -> Project
s {$sel:sourceVersion:Project' :: Maybe Text
sourceVersion = Maybe Text
a} :: Project)

-- | A list of tag key and value pairs associated with this build project.
--
-- These tags are available for use by Amazon Web Services services that
-- support CodeBuild build project tags.
project_tags :: Lens.Lens' Project (Prelude.Maybe [Tag])
project_tags :: Lens' Project (Maybe [Tag])
project_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:Project' :: Project -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: Project
s@Project' {} Maybe [Tag]
a -> Project
s {$sel:tags:Project' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: Project) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | How long, in minutes, from 5 to 480 (8 hours), for CodeBuild to wait
-- before timing out any related build that did not get marked as
-- completed. The default is 60 minutes.
project_timeoutInMinutes :: Lens.Lens' Project (Prelude.Maybe Prelude.Natural)
project_timeoutInMinutes :: Lens' Project (Maybe Natural)
project_timeoutInMinutes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe Natural
timeoutInMinutes :: Maybe Natural
$sel:timeoutInMinutes:Project' :: Project -> Maybe Natural
timeoutInMinutes} -> Maybe Natural
timeoutInMinutes) (\s :: Project
s@Project' {} Maybe Natural
a -> Project
s {$sel:timeoutInMinutes:Project' :: Maybe Natural
timeoutInMinutes = Maybe Natural
a} :: Project)

-- | Information about the VPC configuration that CodeBuild accesses.
project_vpcConfig :: Lens.Lens' Project (Prelude.Maybe VpcConfig)
project_vpcConfig :: Lens' Project (Maybe VpcConfig)
project_vpcConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe VpcConfig
vpcConfig :: Maybe VpcConfig
$sel:vpcConfig:Project' :: Project -> Maybe VpcConfig
vpcConfig} -> Maybe VpcConfig
vpcConfig) (\s :: Project
s@Project' {} Maybe VpcConfig
a -> Project
s {$sel:vpcConfig:Project' :: Maybe VpcConfig
vpcConfig = Maybe VpcConfig
a} :: Project)

-- | Information about a webhook that connects repository events to a build
-- project in CodeBuild.
project_webhook :: Lens.Lens' Project (Prelude.Maybe Webhook)
project_webhook :: Lens' Project (Maybe Webhook)
project_webhook = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Project' {Maybe Webhook
webhook :: Maybe Webhook
$sel:webhook:Project' :: Project -> Maybe Webhook
webhook} -> Maybe Webhook
webhook) (\s :: Project
s@Project' {} Maybe Webhook
a -> Project
s {$sel:webhook:Project' :: Maybe Webhook
webhook = Maybe Webhook
a} :: Project)

instance Data.FromJSON Project where
  parseJSON :: Value -> Parser Project
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Project"
      ( \Object
x ->
          Maybe Text
-> Maybe ProjectArtifacts
-> Maybe ProjectBadge
-> Maybe ProjectBuildBatchConfig
-> Maybe ProjectCache
-> Maybe Int
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe ProjectEnvironment
-> Maybe [ProjectFileSystemLocation]
-> Maybe POSIX
-> Maybe LogsConfig
-> Maybe Text
-> Maybe ProjectVisibilityType
-> Maybe Text
-> Maybe Natural
-> Maybe Text
-> Maybe [ProjectArtifacts]
-> Maybe [ProjectSourceVersion]
-> Maybe [ProjectSource]
-> Maybe Text
-> Maybe ProjectSource
-> Maybe Text
-> Maybe [Tag]
-> Maybe Natural
-> Maybe VpcConfig
-> Maybe Webhook
-> Project
Project'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"artifacts")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"badge")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"buildBatchConfig")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"cache")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"concurrentBuildLimit")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"created")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"description")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"encryptionKey")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"environment")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"fileSystemLocations"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"lastModified")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"logsConfig")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"projectVisibility")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"publicProjectAlias")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"queuedTimeoutInMinutes")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"resourceAccessRole")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"secondaryArtifacts"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"secondarySourceVersions"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"secondarySources"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"serviceRole")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"source")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"sourceVersion")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"tags" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"timeoutInMinutes")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"vpcConfig")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"webhook")
      )

instance Prelude.Hashable Project where
  hashWithSalt :: Int -> Project -> Int
hashWithSalt Int
_salt Project' {Maybe Int
Maybe Natural
Maybe [ProjectArtifacts]
Maybe [ProjectFileSystemLocation]
Maybe [ProjectSourceVersion]
Maybe [ProjectSource]
Maybe [Tag]
Maybe Text
Maybe POSIX
Maybe ProjectArtifacts
Maybe ProjectBadge
Maybe ProjectBuildBatchConfig
Maybe ProjectCache
Maybe ProjectVisibilityType
Maybe ProjectEnvironment
Maybe LogsConfig
Maybe ProjectSource
Maybe VpcConfig
Maybe Webhook
webhook :: Maybe Webhook
vpcConfig :: Maybe VpcConfig
timeoutInMinutes :: Maybe Natural
tags :: Maybe [Tag]
sourceVersion :: Maybe Text
source :: Maybe ProjectSource
serviceRole :: Maybe Text
secondarySources :: Maybe [ProjectSource]
secondarySourceVersions :: Maybe [ProjectSourceVersion]
secondaryArtifacts :: Maybe [ProjectArtifacts]
resourceAccessRole :: Maybe Text
queuedTimeoutInMinutes :: Maybe Natural
publicProjectAlias :: Maybe Text
projectVisibility :: Maybe ProjectVisibilityType
name :: Maybe Text
logsConfig :: Maybe LogsConfig
lastModified :: Maybe POSIX
fileSystemLocations :: Maybe [ProjectFileSystemLocation]
environment :: Maybe ProjectEnvironment
encryptionKey :: Maybe Text
description :: Maybe Text
created :: Maybe POSIX
concurrentBuildLimit :: Maybe Int
cache :: Maybe ProjectCache
buildBatchConfig :: Maybe ProjectBuildBatchConfig
badge :: Maybe ProjectBadge
artifacts :: Maybe ProjectArtifacts
arn :: Maybe Text
$sel:webhook:Project' :: Project -> Maybe Webhook
$sel:vpcConfig:Project' :: Project -> Maybe VpcConfig
$sel:timeoutInMinutes:Project' :: Project -> Maybe Natural
$sel:tags:Project' :: Project -> Maybe [Tag]
$sel:sourceVersion:Project' :: Project -> Maybe Text
$sel:source:Project' :: Project -> Maybe ProjectSource
$sel:serviceRole:Project' :: Project -> Maybe Text
$sel:secondarySources:Project' :: Project -> Maybe [ProjectSource]
$sel:secondarySourceVersions:Project' :: Project -> Maybe [ProjectSourceVersion]
$sel:secondaryArtifacts:Project' :: Project -> Maybe [ProjectArtifacts]
$sel:resourceAccessRole:Project' :: Project -> Maybe Text
$sel:queuedTimeoutInMinutes:Project' :: Project -> Maybe Natural
$sel:publicProjectAlias:Project' :: Project -> Maybe Text
$sel:projectVisibility:Project' :: Project -> Maybe ProjectVisibilityType
$sel:name:Project' :: Project -> Maybe Text
$sel:logsConfig:Project' :: Project -> Maybe LogsConfig
$sel:lastModified:Project' :: Project -> Maybe POSIX
$sel:fileSystemLocations:Project' :: Project -> Maybe [ProjectFileSystemLocation]
$sel:environment:Project' :: Project -> Maybe ProjectEnvironment
$sel:encryptionKey:Project' :: Project -> Maybe Text
$sel:description:Project' :: Project -> Maybe Text
$sel:created:Project' :: Project -> Maybe POSIX
$sel:concurrentBuildLimit:Project' :: Project -> Maybe Int
$sel:cache:Project' :: Project -> Maybe ProjectCache
$sel:buildBatchConfig:Project' :: Project -> Maybe ProjectBuildBatchConfig
$sel:badge:Project' :: Project -> Maybe ProjectBadge
$sel:artifacts:Project' :: Project -> Maybe ProjectArtifacts
$sel:arn:Project' :: Project -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ProjectArtifacts
artifacts
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ProjectBadge
badge
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ProjectBuildBatchConfig
buildBatchConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ProjectCache
cache
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
concurrentBuildLimit
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
created
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
encryptionKey
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ProjectEnvironment
environment
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ProjectFileSystemLocation]
fileSystemLocations
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastModified
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LogsConfig
logsConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ProjectVisibilityType
projectVisibility
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
publicProjectAlias
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
queuedTimeoutInMinutes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceAccessRole
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ProjectArtifacts]
secondaryArtifacts
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ProjectSourceVersion]
secondarySourceVersions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ProjectSource]
secondarySources
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
serviceRole
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ProjectSource
source
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sourceVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
timeoutInMinutes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VpcConfig
vpcConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Webhook
webhook

instance Prelude.NFData Project where
  rnf :: Project -> ()
rnf Project' {Maybe Int
Maybe Natural
Maybe [ProjectArtifacts]
Maybe [ProjectFileSystemLocation]
Maybe [ProjectSourceVersion]
Maybe [ProjectSource]
Maybe [Tag]
Maybe Text
Maybe POSIX
Maybe ProjectArtifacts
Maybe ProjectBadge
Maybe ProjectBuildBatchConfig
Maybe ProjectCache
Maybe ProjectVisibilityType
Maybe ProjectEnvironment
Maybe LogsConfig
Maybe ProjectSource
Maybe VpcConfig
Maybe Webhook
webhook :: Maybe Webhook
vpcConfig :: Maybe VpcConfig
timeoutInMinutes :: Maybe Natural
tags :: Maybe [Tag]
sourceVersion :: Maybe Text
source :: Maybe ProjectSource
serviceRole :: Maybe Text
secondarySources :: Maybe [ProjectSource]
secondarySourceVersions :: Maybe [ProjectSourceVersion]
secondaryArtifacts :: Maybe [ProjectArtifacts]
resourceAccessRole :: Maybe Text
queuedTimeoutInMinutes :: Maybe Natural
publicProjectAlias :: Maybe Text
projectVisibility :: Maybe ProjectVisibilityType
name :: Maybe Text
logsConfig :: Maybe LogsConfig
lastModified :: Maybe POSIX
fileSystemLocations :: Maybe [ProjectFileSystemLocation]
environment :: Maybe ProjectEnvironment
encryptionKey :: Maybe Text
description :: Maybe Text
created :: Maybe POSIX
concurrentBuildLimit :: Maybe Int
cache :: Maybe ProjectCache
buildBatchConfig :: Maybe ProjectBuildBatchConfig
badge :: Maybe ProjectBadge
artifacts :: Maybe ProjectArtifacts
arn :: Maybe Text
$sel:webhook:Project' :: Project -> Maybe Webhook
$sel:vpcConfig:Project' :: Project -> Maybe VpcConfig
$sel:timeoutInMinutes:Project' :: Project -> Maybe Natural
$sel:tags:Project' :: Project -> Maybe [Tag]
$sel:sourceVersion:Project' :: Project -> Maybe Text
$sel:source:Project' :: Project -> Maybe ProjectSource
$sel:serviceRole:Project' :: Project -> Maybe Text
$sel:secondarySources:Project' :: Project -> Maybe [ProjectSource]
$sel:secondarySourceVersions:Project' :: Project -> Maybe [ProjectSourceVersion]
$sel:secondaryArtifacts:Project' :: Project -> Maybe [ProjectArtifacts]
$sel:resourceAccessRole:Project' :: Project -> Maybe Text
$sel:queuedTimeoutInMinutes:Project' :: Project -> Maybe Natural
$sel:publicProjectAlias:Project' :: Project -> Maybe Text
$sel:projectVisibility:Project' :: Project -> Maybe ProjectVisibilityType
$sel:name:Project' :: Project -> Maybe Text
$sel:logsConfig:Project' :: Project -> Maybe LogsConfig
$sel:lastModified:Project' :: Project -> Maybe POSIX
$sel:fileSystemLocations:Project' :: Project -> Maybe [ProjectFileSystemLocation]
$sel:environment:Project' :: Project -> Maybe ProjectEnvironment
$sel:encryptionKey:Project' :: Project -> Maybe Text
$sel:description:Project' :: Project -> Maybe Text
$sel:created:Project' :: Project -> Maybe POSIX
$sel:concurrentBuildLimit:Project' :: Project -> Maybe Int
$sel:cache:Project' :: Project -> Maybe ProjectCache
$sel:buildBatchConfig:Project' :: Project -> Maybe ProjectBuildBatchConfig
$sel:badge:Project' :: Project -> Maybe ProjectBadge
$sel:artifacts:Project' :: Project -> Maybe ProjectArtifacts
$sel:arn:Project' :: Project -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ProjectArtifacts
artifacts
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ProjectBadge
badge
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ProjectBuildBatchConfig
buildBatchConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ProjectCache
cache
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
concurrentBuildLimit
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
created
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
encryptionKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ProjectEnvironment
environment
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ProjectFileSystemLocation]
fileSystemLocations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastModified
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LogsConfig
logsConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ProjectVisibilityType
projectVisibility
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
publicProjectAlias
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
queuedTimeoutInMinutes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceAccessRole
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ProjectArtifacts]
secondaryArtifacts
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [ProjectSourceVersion]
secondarySourceVersions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ProjectSource]
secondarySources
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
serviceRole
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ProjectSource
source
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
sourceVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Natural
timeoutInMinutes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe VpcConfig
vpcConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Webhook
webhook