{-# 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-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- 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.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Information about a build project.
--
-- /See:/ 'newProject' smart constructor.
data Project = Project'
  { -- | An array of @ProjectArtifacts@ objects.
    Project -> Maybe [ProjectArtifacts]
secondaryArtifacts :: Prelude.Maybe [ProjectArtifacts],
    -- | 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,
    -- | 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 environment for this build project.
    Project -> Maybe ProjectEnvironment
environment :: Prelude.Maybe ProjectEnvironment,
    -- | When the build project was created, expressed in Unix time format.
    Project -> Maybe POSIX
created :: Prelude.Maybe Core.POSIX,
    -- | 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,
    -- | 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],
    -- | The number of minutes a build is allowed to be queued before it times
    -- out.
    Project -> Maybe Natural
queuedTimeoutInMinutes :: Prelude.Maybe Prelude.Natural,
    -- | Information about the cache for the build project.
    Project -> Maybe ProjectCache
cache :: Prelude.Maybe ProjectCache,
    -- | An array of @ProjectSource@ objects.
    Project -> Maybe [ProjectSource]
secondarySources :: 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,
    -- | The name of the build project.
    Project -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | Information about the VPC configuration that CodeBuild accesses.
    Project -> Maybe VpcConfig
vpcConfig :: Prelude.Maybe VpcConfig,
    -- | Contains the project identifier used with the public build APIs.
    Project -> Maybe Text
publicProjectAlias :: Prelude.Maybe Prelude.Text,
    -- | Information about the build input source code for this build project.
    Project -> Maybe ProjectSource
source :: Prelude.Maybe ProjectSource,
    -- | Information about the build badge for the build project.
    Project -> Maybe ProjectBadge
badge :: Prelude.Maybe ProjectBadge,
    -- | 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,
    -- | 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],
    -- | A ProjectBuildBatchConfig object that defines the batch build options
    -- for the project.
    Project -> Maybe ProjectBuildBatchConfig
buildBatchConfig :: Prelude.Maybe ProjectBuildBatchConfig,
    -- | 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,
    -- | When the build project\'s settings were last modified, expressed in Unix
    -- time format.
    Project -> Maybe POSIX
lastModified :: Prelude.Maybe Core.POSIX,
    Project -> Maybe ProjectVisibilityType
projectVisibility :: Prelude.Maybe ProjectVisibilityType,
    -- | Information about a webhook that connects repository events to a build
    -- project in CodeBuild.
    Project -> Maybe Webhook
webhook :: Prelude.Maybe Webhook,
    -- | A description that makes the build project easy to identify.
    Project -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | 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,
    -- | 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
  }
  deriving (Project -> Project -> Bool
(Project -> Project -> Bool)
-> (Project -> Project -> Bool) -> Eq Project
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]
(Int -> ReadS Project)
-> ReadS [Project]
-> ReadPrec Project
-> ReadPrec [Project]
-> Read 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
(Int -> Project -> ShowS)
-> (Project -> String) -> ([Project] -> ShowS) -> Show Project
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. Project -> Rep Project x)
-> (forall x. Rep Project x -> Project) -> Generic Project
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:
--
-- 'secondaryArtifacts', 'project_secondaryArtifacts' - An array of @ProjectArtifacts@ objects.
--
-- '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.
--
-- '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.
--
-- 'environment', 'project_environment' - Information about the build environment for this build project.
--
-- 'created', 'project_created' - When the build project was created, expressed in Unix time format.
--
-- '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.
--
-- '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).
--
-- 'queuedTimeoutInMinutes', 'project_queuedTimeoutInMinutes' - The number of minutes a build is allowed to be queued before it times
-- out.
--
-- 'cache', 'project_cache' - Information about the cache for the build project.
--
-- 'secondarySources', 'project_secondarySources' - An array of @ProjectSource@ objects.
--
-- '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/.
--
-- 'name', 'project_name' - The name of the build project.
--
-- 'vpcConfig', 'project_vpcConfig' - Information about the VPC configuration that CodeBuild accesses.
--
-- 'publicProjectAlias', 'project_publicProjectAlias' - Contains the project identifier used with the public build APIs.
--
-- 'source', 'project_source' - Information about the build input source code for this build project.
--
-- 'badge', 'project_badge' - Information about the build badge for the build project.
--
-- 'logsConfig', 'project_logsConfig' - Information about logs for the build project. A project can create logs
-- in CloudWatch Logs, an S3 bucket, or both.
--
-- '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.
--
-- 'buildBatchConfig', 'project_buildBatchConfig' - A ProjectBuildBatchConfig object that defines the batch build options
-- for the project.
--
-- '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).
--
-- 'lastModified', 'project_lastModified' - When the build project\'s settings were last modified, expressed in Unix
-- time format.
--
-- 'projectVisibility', 'project_projectVisibility' - Undocumented member.
--
-- 'webhook', 'project_webhook' - Information about a webhook that connects repository events to a build
-- project in CodeBuild.
--
-- 'description', 'project_description' - A description that makes the build project easy to identify.
--
-- '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.
--
-- '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.
newProject ::
  Project
newProject :: Project
newProject =
  Project' :: Maybe [ProjectArtifacts]
-> Maybe Text
-> Maybe Text
-> Maybe ProjectArtifacts
-> Maybe ProjectEnvironment
-> Maybe POSIX
-> Maybe Int
-> Maybe [ProjectSourceVersion]
-> Maybe Natural
-> Maybe ProjectCache
-> Maybe [ProjectSource]
-> Maybe Text
-> Maybe Text
-> Maybe VpcConfig
-> Maybe Text
-> Maybe ProjectSource
-> Maybe ProjectBadge
-> Maybe LogsConfig
-> Maybe [ProjectFileSystemLocation]
-> Maybe ProjectBuildBatchConfig
-> Maybe Text
-> Maybe POSIX
-> Maybe ProjectVisibilityType
-> Maybe Webhook
-> Maybe Text
-> Maybe Text
-> Maybe [Tag]
-> Maybe Natural
-> Project
Project'
    { $sel:secondaryArtifacts:Project' :: Maybe [ProjectArtifacts]
secondaryArtifacts = Maybe [ProjectArtifacts]
forall a. Maybe a
Prelude.Nothing,
      $sel:resourceAccessRole:Project' :: Maybe Text
resourceAccessRole = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:Project' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:artifacts:Project' :: Maybe ProjectArtifacts
artifacts = Maybe ProjectArtifacts
forall a. Maybe a
Prelude.Nothing,
      $sel:environment:Project' :: Maybe ProjectEnvironment
environment = Maybe ProjectEnvironment
forall a. Maybe a
Prelude.Nothing,
      $sel:created:Project' :: Maybe POSIX
created = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:concurrentBuildLimit:Project' :: Maybe Int
concurrentBuildLimit = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:secondarySourceVersions:Project' :: Maybe [ProjectSourceVersion]
secondarySourceVersions = Maybe [ProjectSourceVersion]
forall a. Maybe a
Prelude.Nothing,
      $sel:queuedTimeoutInMinutes:Project' :: Maybe Natural
queuedTimeoutInMinutes = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:cache:Project' :: Maybe ProjectCache
cache = Maybe ProjectCache
forall a. Maybe a
Prelude.Nothing,
      $sel:secondarySources:Project' :: Maybe [ProjectSource]
secondarySources = Maybe [ProjectSource]
forall a. Maybe a
Prelude.Nothing,
      $sel:sourceVersion:Project' :: Maybe Text
sourceVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:name:Project' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcConfig:Project' :: Maybe VpcConfig
vpcConfig = Maybe VpcConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:publicProjectAlias:Project' :: Maybe Text
publicProjectAlias = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:source:Project' :: Maybe ProjectSource
source = Maybe ProjectSource
forall a. Maybe a
Prelude.Nothing,
      $sel:badge:Project' :: Maybe ProjectBadge
badge = Maybe ProjectBadge
forall a. Maybe a
Prelude.Nothing,
      $sel:logsConfig:Project' :: Maybe LogsConfig
logsConfig = Maybe LogsConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:fileSystemLocations:Project' :: Maybe [ProjectFileSystemLocation]
fileSystemLocations = Maybe [ProjectFileSystemLocation]
forall a. Maybe a
Prelude.Nothing,
      $sel:buildBatchConfig:Project' :: Maybe ProjectBuildBatchConfig
buildBatchConfig = Maybe ProjectBuildBatchConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionKey:Project' :: Maybe Text
encryptionKey = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:lastModified:Project' :: Maybe POSIX
lastModified = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:projectVisibility:Project' :: Maybe ProjectVisibilityType
projectVisibility = Maybe ProjectVisibilityType
forall a. Maybe a
Prelude.Nothing,
      $sel:webhook:Project' :: Maybe Webhook
webhook = Maybe Webhook
forall a. Maybe a
Prelude.Nothing,
      $sel:description:Project' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:serviceRole:Project' :: Maybe Text
serviceRole = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:Project' :: Maybe [Tag]
tags = Maybe [Tag]
forall a. Maybe a
Prelude.Nothing,
      $sel:timeoutInMinutes:Project' :: Maybe Natural
timeoutInMinutes = Maybe Natural
forall a. Maybe a
Prelude.Nothing
    }

-- | An array of @ProjectArtifacts@ objects.
project_secondaryArtifacts :: Lens.Lens' Project (Prelude.Maybe [ProjectArtifacts])
project_secondaryArtifacts :: (Maybe [ProjectArtifacts] -> f (Maybe [ProjectArtifacts]))
-> Project -> f Project
project_secondaryArtifacts = (Project -> Maybe [ProjectArtifacts])
-> (Project -> Maybe [ProjectArtifacts] -> Project)
-> Lens
     Project
     Project
     (Maybe [ProjectArtifacts])
     (Maybe [ProjectArtifacts])
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) ((Maybe [ProjectArtifacts] -> f (Maybe [ProjectArtifacts]))
 -> Project -> f Project)
-> ((Maybe [ProjectArtifacts] -> f (Maybe [ProjectArtifacts]))
    -> Maybe [ProjectArtifacts] -> f (Maybe [ProjectArtifacts]))
-> (Maybe [ProjectArtifacts] -> f (Maybe [ProjectArtifacts]))
-> Project
-> f Project
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [ProjectArtifacts]
  [ProjectArtifacts]
  [ProjectArtifacts]
  [ProjectArtifacts]
-> Iso
     (Maybe [ProjectArtifacts])
     (Maybe [ProjectArtifacts])
     (Maybe [ProjectArtifacts])
     (Maybe [ProjectArtifacts])
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 AnIso
  [ProjectArtifacts]
  [ProjectArtifacts]
  [ProjectArtifacts]
  [ProjectArtifacts]
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 access the CloudWatch
-- Logs and Amazon S3 artifacts for the project\'s builds.
project_resourceAccessRole :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_resourceAccessRole :: (Maybe Text -> f (Maybe Text)) -> Project -> f Project
project_resourceAccessRole = (Project -> Maybe Text)
-> (Project -> Maybe Text -> Project)
-> Lens Project Project (Maybe Text) (Maybe Text)
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)

-- | The Amazon Resource Name (ARN) of the build project.
project_arn :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_arn :: (Maybe Text -> f (Maybe Text)) -> Project -> f Project
project_arn = (Project -> Maybe Text)
-> (Project -> Maybe Text -> Project)
-> Lens Project Project (Maybe Text) (Maybe Text)
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 :: (Maybe ProjectArtifacts -> f (Maybe ProjectArtifacts))
-> Project -> f Project
project_artifacts = (Project -> Maybe ProjectArtifacts)
-> (Project -> Maybe ProjectArtifacts -> Project)
-> Lens
     Project Project (Maybe ProjectArtifacts) (Maybe ProjectArtifacts)
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 environment for this build project.
project_environment :: Lens.Lens' Project (Prelude.Maybe ProjectEnvironment)
project_environment :: (Maybe ProjectEnvironment -> f (Maybe ProjectEnvironment))
-> Project -> f Project
project_environment = (Project -> Maybe ProjectEnvironment)
-> (Project -> Maybe ProjectEnvironment -> Project)
-> Lens
     Project
     Project
     (Maybe ProjectEnvironment)
     (Maybe ProjectEnvironment)
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)

-- | When the build project was created, expressed in Unix time format.
project_created :: Lens.Lens' Project (Prelude.Maybe Prelude.UTCTime)
project_created :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Project -> f Project
project_created = (Project -> Maybe POSIX)
-> (Project -> Maybe POSIX -> Project)
-> Lens Project Project (Maybe POSIX) (Maybe POSIX)
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) ((Maybe POSIX -> f (Maybe POSIX)) -> Project -> f Project)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Project
-> f Project
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | 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 :: (Maybe Int -> f (Maybe Int)) -> Project -> f Project
project_concurrentBuildLimit = (Project -> Maybe Int)
-> (Project -> Maybe Int -> Project)
-> Lens Project Project (Maybe Int) (Maybe Int)
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)

-- | 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 :: (Maybe [ProjectSourceVersion] -> f (Maybe [ProjectSourceVersion]))
-> Project -> f Project
project_secondarySourceVersions = (Project -> Maybe [ProjectSourceVersion])
-> (Project -> Maybe [ProjectSourceVersion] -> Project)
-> Lens
     Project
     Project
     (Maybe [ProjectSourceVersion])
     (Maybe [ProjectSourceVersion])
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) ((Maybe [ProjectSourceVersion] -> f (Maybe [ProjectSourceVersion]))
 -> Project -> f Project)
-> ((Maybe [ProjectSourceVersion]
     -> f (Maybe [ProjectSourceVersion]))
    -> Maybe [ProjectSourceVersion]
    -> f (Maybe [ProjectSourceVersion]))
-> (Maybe [ProjectSourceVersion]
    -> f (Maybe [ProjectSourceVersion]))
-> Project
-> f Project
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [ProjectSourceVersion]
  [ProjectSourceVersion]
  [ProjectSourceVersion]
  [ProjectSourceVersion]
-> Iso
     (Maybe [ProjectSourceVersion])
     (Maybe [ProjectSourceVersion])
     (Maybe [ProjectSourceVersion])
     (Maybe [ProjectSourceVersion])
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 AnIso
  [ProjectSourceVersion]
  [ProjectSourceVersion]
  [ProjectSourceVersion]
  [ProjectSourceVersion]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | 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 :: (Maybe Natural -> f (Maybe Natural)) -> Project -> f Project
project_queuedTimeoutInMinutes = (Project -> Maybe Natural)
-> (Project -> Maybe Natural -> Project)
-> Lens Project Project (Maybe Natural) (Maybe Natural)
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)

-- | Information about the cache for the build project.
project_cache :: Lens.Lens' Project (Prelude.Maybe ProjectCache)
project_cache :: (Maybe ProjectCache -> f (Maybe ProjectCache))
-> Project -> f Project
project_cache = (Project -> Maybe ProjectCache)
-> (Project -> Maybe ProjectCache -> Project)
-> Lens Project Project (Maybe ProjectCache) (Maybe ProjectCache)
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)

-- | An array of @ProjectSource@ objects.
project_secondarySources :: Lens.Lens' Project (Prelude.Maybe [ProjectSource])
project_secondarySources :: (Maybe [ProjectSource] -> f (Maybe [ProjectSource]))
-> Project -> f Project
project_secondarySources = (Project -> Maybe [ProjectSource])
-> (Project -> Maybe [ProjectSource] -> Project)
-> Lens
     Project Project (Maybe [ProjectSource]) (Maybe [ProjectSource])
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) ((Maybe [ProjectSource] -> f (Maybe [ProjectSource]))
 -> Project -> f Project)
-> ((Maybe [ProjectSource] -> f (Maybe [ProjectSource]))
    -> Maybe [ProjectSource] -> f (Maybe [ProjectSource]))
-> (Maybe [ProjectSource] -> f (Maybe [ProjectSource]))
-> Project
-> f Project
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [ProjectSource] [ProjectSource] [ProjectSource] [ProjectSource]
-> Iso
     (Maybe [ProjectSource])
     (Maybe [ProjectSource])
     (Maybe [ProjectSource])
     (Maybe [ProjectSource])
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 AnIso
  [ProjectSource] [ProjectSource] [ProjectSource] [ProjectSource]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | 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 :: (Maybe Text -> f (Maybe Text)) -> Project -> f Project
project_sourceVersion = (Project -> Maybe Text)
-> (Project -> Maybe Text -> Project)
-> Lens Project Project (Maybe Text) (Maybe Text)
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)

-- | The name of the build project.
project_name :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_name :: (Maybe Text -> f (Maybe Text)) -> Project -> f Project
project_name = (Project -> Maybe Text)
-> (Project -> Maybe Text -> Project)
-> Lens Project Project (Maybe Text) (Maybe Text)
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)

-- | Information about the VPC configuration that CodeBuild accesses.
project_vpcConfig :: Lens.Lens' Project (Prelude.Maybe VpcConfig)
project_vpcConfig :: (Maybe VpcConfig -> f (Maybe VpcConfig)) -> Project -> f Project
project_vpcConfig = (Project -> Maybe VpcConfig)
-> (Project -> Maybe VpcConfig -> Project)
-> Lens Project Project (Maybe VpcConfig) (Maybe 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)

-- | Contains the project identifier used with the public build APIs.
project_publicProjectAlias :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_publicProjectAlias :: (Maybe Text -> f (Maybe Text)) -> Project -> f Project
project_publicProjectAlias = (Project -> Maybe Text)
-> (Project -> Maybe Text -> Project)
-> Lens Project Project (Maybe Text) (Maybe Text)
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)

-- | Information about the build input source code for this build project.
project_source :: Lens.Lens' Project (Prelude.Maybe ProjectSource)
project_source :: (Maybe ProjectSource -> f (Maybe ProjectSource))
-> Project -> f Project
project_source = (Project -> Maybe ProjectSource)
-> (Project -> Maybe ProjectSource -> Project)
-> Lens Project Project (Maybe ProjectSource) (Maybe ProjectSource)
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)

-- | Information about the build badge for the build project.
project_badge :: Lens.Lens' Project (Prelude.Maybe ProjectBadge)
project_badge :: (Maybe ProjectBadge -> f (Maybe ProjectBadge))
-> Project -> f Project
project_badge = (Project -> Maybe ProjectBadge)
-> (Project -> Maybe ProjectBadge -> Project)
-> Lens Project Project (Maybe ProjectBadge) (Maybe ProjectBadge)
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)

-- | 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 :: (Maybe LogsConfig -> f (Maybe LogsConfig)) -> Project -> f Project
project_logsConfig = (Project -> Maybe LogsConfig)
-> (Project -> Maybe LogsConfig -> Project)
-> Lens Project Project (Maybe LogsConfig) (Maybe 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)

-- | 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 :: (Maybe [ProjectFileSystemLocation]
 -> f (Maybe [ProjectFileSystemLocation]))
-> Project -> f Project
project_fileSystemLocations = (Project -> Maybe [ProjectFileSystemLocation])
-> (Project -> Maybe [ProjectFileSystemLocation] -> Project)
-> Lens
     Project
     Project
     (Maybe [ProjectFileSystemLocation])
     (Maybe [ProjectFileSystemLocation])
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) ((Maybe [ProjectFileSystemLocation]
  -> f (Maybe [ProjectFileSystemLocation]))
 -> Project -> f Project)
-> ((Maybe [ProjectFileSystemLocation]
     -> f (Maybe [ProjectFileSystemLocation]))
    -> Maybe [ProjectFileSystemLocation]
    -> f (Maybe [ProjectFileSystemLocation]))
-> (Maybe [ProjectFileSystemLocation]
    -> f (Maybe [ProjectFileSystemLocation]))
-> Project
-> f Project
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [ProjectFileSystemLocation]
  [ProjectFileSystemLocation]
  [ProjectFileSystemLocation]
  [ProjectFileSystemLocation]
-> Iso
     (Maybe [ProjectFileSystemLocation])
     (Maybe [ProjectFileSystemLocation])
     (Maybe [ProjectFileSystemLocation])
     (Maybe [ProjectFileSystemLocation])
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 AnIso
  [ProjectFileSystemLocation]
  [ProjectFileSystemLocation]
  [ProjectFileSystemLocation]
  [ProjectFileSystemLocation]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A ProjectBuildBatchConfig object that defines the batch build options
-- for the project.
project_buildBatchConfig :: Lens.Lens' Project (Prelude.Maybe ProjectBuildBatchConfig)
project_buildBatchConfig :: (Maybe ProjectBuildBatchConfig
 -> f (Maybe ProjectBuildBatchConfig))
-> Project -> f Project
project_buildBatchConfig = (Project -> Maybe ProjectBuildBatchConfig)
-> (Project -> Maybe ProjectBuildBatchConfig -> Project)
-> Lens
     Project
     Project
     (Maybe ProjectBuildBatchConfig)
     (Maybe ProjectBuildBatchConfig)
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)

-- | 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 :: (Maybe Text -> f (Maybe Text)) -> Project -> f Project
project_encryptionKey = (Project -> Maybe Text)
-> (Project -> Maybe Text -> Project)
-> Lens Project Project (Maybe Text) (Maybe Text)
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)

-- | 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 :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Project -> f Project
project_lastModified = (Project -> Maybe POSIX)
-> (Project -> Maybe POSIX -> Project)
-> Lens Project Project (Maybe POSIX) (Maybe POSIX)
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) ((Maybe POSIX -> f (Maybe POSIX)) -> Project -> f Project)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Project
-> f Project
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Undocumented member.
project_projectVisibility :: Lens.Lens' Project (Prelude.Maybe ProjectVisibilityType)
project_projectVisibility :: (Maybe ProjectVisibilityType -> f (Maybe ProjectVisibilityType))
-> Project -> f Project
project_projectVisibility = (Project -> Maybe ProjectVisibilityType)
-> (Project -> Maybe ProjectVisibilityType -> Project)
-> Lens
     Project
     Project
     (Maybe ProjectVisibilityType)
     (Maybe ProjectVisibilityType)
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)

-- | Information about a webhook that connects repository events to a build
-- project in CodeBuild.
project_webhook :: Lens.Lens' Project (Prelude.Maybe Webhook)
project_webhook :: (Maybe Webhook -> f (Maybe Webhook)) -> Project -> f Project
project_webhook = (Project -> Maybe Webhook)
-> (Project -> Maybe Webhook -> Project)
-> Lens Project Project (Maybe Webhook) (Maybe 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)

-- | A description that makes the build project easy to identify.
project_description :: Lens.Lens' Project (Prelude.Maybe Prelude.Text)
project_description :: (Maybe Text -> f (Maybe Text)) -> Project -> f Project
project_description = (Project -> Maybe Text)
-> (Project -> Maybe Text -> Project)
-> Lens Project Project (Maybe Text) (Maybe Text)
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 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 :: (Maybe Text -> f (Maybe Text)) -> Project -> f Project
project_serviceRole = (Project -> Maybe Text)
-> (Project -> Maybe Text -> Project)
-> Lens Project Project (Maybe Text) (Maybe Text)
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)

-- | 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 :: (Maybe [Tag] -> f (Maybe [Tag])) -> Project -> f Project
project_tags = (Project -> Maybe [Tag])
-> (Project -> Maybe [Tag] -> Project)
-> Lens Project Project (Maybe [Tag]) (Maybe [Tag])
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) ((Maybe [Tag] -> f (Maybe [Tag])) -> Project -> f Project)
-> ((Maybe [Tag] -> f (Maybe [Tag]))
    -> Maybe [Tag] -> f (Maybe [Tag]))
-> (Maybe [Tag] -> f (Maybe [Tag]))
-> Project
-> f Project
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Tag] [Tag] [Tag] [Tag]
-> Iso (Maybe [Tag]) (Maybe [Tag]) (Maybe [Tag]) (Maybe [Tag])
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 AnIso [Tag] [Tag] [Tag] [Tag]
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 :: (Maybe Natural -> f (Maybe Natural)) -> Project -> f Project
project_timeoutInMinutes = (Project -> Maybe Natural)
-> (Project -> Maybe Natural -> Project)
-> Lens Project Project (Maybe Natural) (Maybe Natural)
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)

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

instance Prelude.Hashable Project

instance Prelude.NFData Project