{-# 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.Build
-- 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.Build where

import Amazonka.CodeBuild.Types.BuildArtifacts
import Amazonka.CodeBuild.Types.BuildPhase
import Amazonka.CodeBuild.Types.DebugSession
import Amazonka.CodeBuild.Types.ExportedEnvironmentVariable
import Amazonka.CodeBuild.Types.LogsLocation
import Amazonka.CodeBuild.Types.NetworkInterface
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.StatusType
import Amazonka.CodeBuild.Types.VpcConfig
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Information about a build.
--
-- /See:/ 'newBuild' smart constructor.
data Build = Build'
  { -- | Information about all previous build phases that are complete and
    -- information about any current build phase that is not yet complete.
    Build -> Maybe [BuildPhase]
phases :: Prelude.Maybe [BuildPhase],
    -- | Whether the build is complete. True if complete; otherwise, false.
    Build -> Maybe Bool
buildComplete :: Prelude.Maybe Prelude.Bool,
    -- | An array of @ProjectArtifacts@ objects.
    Build -> Maybe [BuildArtifacts]
secondaryArtifacts :: Prelude.Maybe [BuildArtifacts],
    -- | The Amazon Resource Name (ARN) of the build.
    Build -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | A list of exported environment variables for this build.
    --
    -- Exported environment variables are used in conjunction with CodePipeline
    -- to export environment variables from the current build stage to
    -- subsequent stages in the pipeline. For more information, see
    -- <https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-variables.html Working with variables>
    -- in the /CodePipeline User Guide/.
    Build -> Maybe [ExportedEnvironmentVariable]
exportedEnvironmentVariables :: Prelude.Maybe [ExportedEnvironmentVariable],
    -- | The number of the build. For each project, the @buildNumber@ of its
    -- first build is @1@. The @buildNumber@ of each subsequent build is
    -- incremented by @1@. If a build is deleted, the @buildNumber@ of other
    -- builds does not change.
    Build -> Maybe Integer
buildNumber :: Prelude.Maybe Prelude.Integer,
    -- | When the build process started, expressed in Unix time format.
    Build -> Maybe POSIX
startTime :: Prelude.Maybe Core.POSIX,
    -- | Information about the output artifacts for the build.
    Build -> Maybe BuildArtifacts
artifacts :: Prelude.Maybe BuildArtifacts,
    -- | Information about the build environment for this build.
    Build -> Maybe ProjectEnvironment
environment :: Prelude.Maybe ProjectEnvironment,
    -- | The entity that started the build. Valid values include:
    --
    -- -   If CodePipeline started the build, the pipeline\'s name (for
    --     example, @codepipeline\/my-demo-pipeline@).
    --
    -- -   If an IAM user started the build, the user\'s name (for example,
    --     @MyUserName@).
    --
    -- -   If the Jenkins plugin for CodeBuild started the build, the string
    --     @CodeBuild-Jenkins-Plugin@.
    Build -> Maybe Text
initiator :: Prelude.Maybe Prelude.Text,
    -- | Describes a network interface.
    Build -> Maybe NetworkInterface
networkInterface :: Prelude.Maybe NetworkInterface,
    -- | An array of @ProjectSourceVersion@ objects. Each @ProjectSourceVersion@
    -- 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.
    Build -> Maybe [ProjectSourceVersion]
secondarySourceVersions :: Prelude.Maybe [ProjectSourceVersion],
    -- | The current build phase.
    Build -> Maybe Text
currentPhase :: Prelude.Maybe Prelude.Text,
    -- | The number of minutes a build is allowed to be queued before it times
    -- out.
    Build -> Maybe Int
queuedTimeoutInMinutes :: Prelude.Maybe Prelude.Int,
    -- | Information about the cache for the build.
    Build -> Maybe ProjectCache
cache :: Prelude.Maybe ProjectCache,
    -- | An array of @ProjectSource@ objects.
    Build -> Maybe [ProjectSource]
secondarySources :: Prelude.Maybe [ProjectSource],
    -- | Contains information about the debug session for this build.
    Build -> Maybe DebugSession
debugSession :: Prelude.Maybe DebugSession,
    -- | Any version identifier for the version of the source code to be built.
    -- If @sourceVersion@ is specified at the project level, then this
    -- @sourceVersion@ (at the build level) takes precedence.
    --
    -- 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/.
    Build -> Maybe Text
sourceVersion :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the batch build that this build is a member of, if
    -- applicable.
    Build -> Maybe Text
buildBatchArn :: Prelude.Maybe Prelude.Text,
    -- | Information about the build\'s logs in CloudWatch Logs.
    Build -> Maybe LogsLocation
logs :: Prelude.Maybe LogsLocation,
    -- | An identifier for the version of this build\'s source code.
    --
    -- -   For CodeCommit, GitHub, GitHub Enterprise, and BitBucket, the commit
    --     ID.
    --
    -- -   For CodePipeline, the source revision provided by CodePipeline.
    --
    -- -   For Amazon S3, this does not apply.
    Build -> Maybe Text
resolvedSourceVersion :: Prelude.Maybe Prelude.Text,
    -- | If your CodeBuild project accesses resources in an Amazon VPC, you
    -- provide this parameter that identifies the VPC ID and the list of
    -- security group IDs and subnet IDs. The security groups and subnets must
    -- belong to the same VPC. You must provide at least one security group and
    -- one subnet ID.
    Build -> Maybe VpcConfig
vpcConfig :: Prelude.Maybe VpcConfig,
    -- | When the build process ended, expressed in Unix time format.
    Build -> Maybe POSIX
endTime :: Prelude.Maybe Core.POSIX,
    -- | The name of the CodeBuild project.
    Build -> Maybe Text
projectName :: Prelude.Maybe Prelude.Text,
    -- | The current status of the build. Valid values include:
    --
    -- -   @FAILED@: The build failed.
    --
    -- -   @FAULT@: The build faulted.
    --
    -- -   @IN_PROGRESS@: The build is still in progress.
    --
    -- -   @STOPPED@: The build stopped.
    --
    -- -   @SUCCEEDED@: The build succeeded.
    --
    -- -   @TIMED_OUT@: The build timed out.
    Build -> Maybe StatusType
buildStatus :: Prelude.Maybe StatusType,
    -- | Information about the source code to be built.
    Build -> Maybe ProjectSource
source :: Prelude.Maybe ProjectSource,
    -- | The unique ID for the build.
    Build -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | 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.
    Build -> Maybe [ProjectFileSystemLocation]
fileSystemLocations :: Prelude.Maybe [ProjectFileSystemLocation],
    -- | An array of the ARNs associated with this build\'s reports.
    Build -> Maybe [Text]
reportArns :: 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>@).
    Build -> Maybe Text
encryptionKey :: Prelude.Maybe Prelude.Text,
    -- | The name of a service role used for this build.
    Build -> Maybe Text
serviceRole :: Prelude.Maybe Prelude.Text,
    -- | How long, in minutes, for CodeBuild to wait before timing out this build
    -- if it does not get marked as completed.
    Build -> Maybe Int
timeoutInMinutes :: Prelude.Maybe Prelude.Int
  }
  deriving (Build -> Build -> Bool
(Build -> Build -> Bool) -> (Build -> Build -> Bool) -> Eq Build
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Build -> Build -> Bool
$c/= :: Build -> Build -> Bool
== :: Build -> Build -> Bool
$c== :: Build -> Build -> Bool
Prelude.Eq, ReadPrec [Build]
ReadPrec Build
Int -> ReadS Build
ReadS [Build]
(Int -> ReadS Build)
-> ReadS [Build]
-> ReadPrec Build
-> ReadPrec [Build]
-> Read Build
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Build]
$creadListPrec :: ReadPrec [Build]
readPrec :: ReadPrec Build
$creadPrec :: ReadPrec Build
readList :: ReadS [Build]
$creadList :: ReadS [Build]
readsPrec :: Int -> ReadS Build
$creadsPrec :: Int -> ReadS Build
Prelude.Read, Int -> Build -> ShowS
[Build] -> ShowS
Build -> String
(Int -> Build -> ShowS)
-> (Build -> String) -> ([Build] -> ShowS) -> Show Build
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Build] -> ShowS
$cshowList :: [Build] -> ShowS
show :: Build -> String
$cshow :: Build -> String
showsPrec :: Int -> Build -> ShowS
$cshowsPrec :: Int -> Build -> ShowS
Prelude.Show, (forall x. Build -> Rep Build x)
-> (forall x. Rep Build x -> Build) -> Generic Build
forall x. Rep Build x -> Build
forall x. Build -> Rep Build x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Build x -> Build
$cfrom :: forall x. Build -> Rep Build x
Prelude.Generic)

-- |
-- Create a value of 'Build' 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:
--
-- 'phases', 'build_phases' - Information about all previous build phases that are complete and
-- information about any current build phase that is not yet complete.
--
-- 'buildComplete', 'build_buildComplete' - Whether the build is complete. True if complete; otherwise, false.
--
-- 'secondaryArtifacts', 'build_secondaryArtifacts' - An array of @ProjectArtifacts@ objects.
--
-- 'arn', 'build_arn' - The Amazon Resource Name (ARN) of the build.
--
-- 'exportedEnvironmentVariables', 'build_exportedEnvironmentVariables' - A list of exported environment variables for this build.
--
-- Exported environment variables are used in conjunction with CodePipeline
-- to export environment variables from the current build stage to
-- subsequent stages in the pipeline. For more information, see
-- <https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-variables.html Working with variables>
-- in the /CodePipeline User Guide/.
--
-- 'buildNumber', 'build_buildNumber' - The number of the build. For each project, the @buildNumber@ of its
-- first build is @1@. The @buildNumber@ of each subsequent build is
-- incremented by @1@. If a build is deleted, the @buildNumber@ of other
-- builds does not change.
--
-- 'startTime', 'build_startTime' - When the build process started, expressed in Unix time format.
--
-- 'artifacts', 'build_artifacts' - Information about the output artifacts for the build.
--
-- 'environment', 'build_environment' - Information about the build environment for this build.
--
-- 'initiator', 'build_initiator' - The entity that started the build. Valid values include:
--
-- -   If CodePipeline started the build, the pipeline\'s name (for
--     example, @codepipeline\/my-demo-pipeline@).
--
-- -   If an IAM user started the build, the user\'s name (for example,
--     @MyUserName@).
--
-- -   If the Jenkins plugin for CodeBuild started the build, the string
--     @CodeBuild-Jenkins-Plugin@.
--
-- 'networkInterface', 'build_networkInterface' - Describes a network interface.
--
-- 'secondarySourceVersions', 'build_secondarySourceVersions' - An array of @ProjectSourceVersion@ objects. Each @ProjectSourceVersion@
-- 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.
--
-- 'currentPhase', 'build_currentPhase' - The current build phase.
--
-- 'queuedTimeoutInMinutes', 'build_queuedTimeoutInMinutes' - The number of minutes a build is allowed to be queued before it times
-- out.
--
-- 'cache', 'build_cache' - Information about the cache for the build.
--
-- 'secondarySources', 'build_secondarySources' - An array of @ProjectSource@ objects.
--
-- 'debugSession', 'build_debugSession' - Contains information about the debug session for this build.
--
-- 'sourceVersion', 'build_sourceVersion' - Any version identifier for the version of the source code to be built.
-- If @sourceVersion@ is specified at the project level, then this
-- @sourceVersion@ (at the build level) takes precedence.
--
-- 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/.
--
-- 'buildBatchArn', 'build_buildBatchArn' - The ARN of the batch build that this build is a member of, if
-- applicable.
--
-- 'logs', 'build_logs' - Information about the build\'s logs in CloudWatch Logs.
--
-- 'resolvedSourceVersion', 'build_resolvedSourceVersion' - An identifier for the version of this build\'s source code.
--
-- -   For CodeCommit, GitHub, GitHub Enterprise, and BitBucket, the commit
--     ID.
--
-- -   For CodePipeline, the source revision provided by CodePipeline.
--
-- -   For Amazon S3, this does not apply.
--
-- 'vpcConfig', 'build_vpcConfig' - If your CodeBuild project accesses resources in an Amazon VPC, you
-- provide this parameter that identifies the VPC ID and the list of
-- security group IDs and subnet IDs. The security groups and subnets must
-- belong to the same VPC. You must provide at least one security group and
-- one subnet ID.
--
-- 'endTime', 'build_endTime' - When the build process ended, expressed in Unix time format.
--
-- 'projectName', 'build_projectName' - The name of the CodeBuild project.
--
-- 'buildStatus', 'build_buildStatus' - The current status of the build. Valid values include:
--
-- -   @FAILED@: The build failed.
--
-- -   @FAULT@: The build faulted.
--
-- -   @IN_PROGRESS@: The build is still in progress.
--
-- -   @STOPPED@: The build stopped.
--
-- -   @SUCCEEDED@: The build succeeded.
--
-- -   @TIMED_OUT@: The build timed out.
--
-- 'source', 'build_source' - Information about the source code to be built.
--
-- 'id', 'build_id' - The unique ID for the build.
--
-- 'fileSystemLocations', 'build_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.
--
-- 'reportArns', 'build_reportArns' - An array of the ARNs associated with this build\'s reports.
--
-- 'encryptionKey', 'build_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>@).
--
-- 'serviceRole', 'build_serviceRole' - The name of a service role used for this build.
--
-- 'timeoutInMinutes', 'build_timeoutInMinutes' - How long, in minutes, for CodeBuild to wait before timing out this build
-- if it does not get marked as completed.
newBuild ::
  Build
newBuild :: Build
newBuild =
  Build' :: Maybe [BuildPhase]
-> Maybe Bool
-> Maybe [BuildArtifacts]
-> Maybe Text
-> Maybe [ExportedEnvironmentVariable]
-> Maybe Integer
-> Maybe POSIX
-> Maybe BuildArtifacts
-> Maybe ProjectEnvironment
-> Maybe Text
-> Maybe NetworkInterface
-> Maybe [ProjectSourceVersion]
-> Maybe Text
-> Maybe Int
-> Maybe ProjectCache
-> Maybe [ProjectSource]
-> Maybe DebugSession
-> Maybe Text
-> Maybe Text
-> Maybe LogsLocation
-> Maybe Text
-> Maybe VpcConfig
-> Maybe POSIX
-> Maybe Text
-> Maybe StatusType
-> Maybe ProjectSource
-> Maybe Text
-> Maybe [ProjectFileSystemLocation]
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Build
Build'
    { $sel:phases:Build' :: Maybe [BuildPhase]
phases = Maybe [BuildPhase]
forall a. Maybe a
Prelude.Nothing,
      $sel:buildComplete:Build' :: Maybe Bool
buildComplete = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:secondaryArtifacts:Build' :: Maybe [BuildArtifacts]
secondaryArtifacts = Maybe [BuildArtifacts]
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:Build' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:exportedEnvironmentVariables:Build' :: Maybe [ExportedEnvironmentVariable]
exportedEnvironmentVariables = Maybe [ExportedEnvironmentVariable]
forall a. Maybe a
Prelude.Nothing,
      $sel:buildNumber:Build' :: Maybe Integer
buildNumber = Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:Build' :: Maybe POSIX
startTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:artifacts:Build' :: Maybe BuildArtifacts
artifacts = Maybe BuildArtifacts
forall a. Maybe a
Prelude.Nothing,
      $sel:environment:Build' :: Maybe ProjectEnvironment
environment = Maybe ProjectEnvironment
forall a. Maybe a
Prelude.Nothing,
      $sel:initiator:Build' :: Maybe Text
initiator = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:networkInterface:Build' :: Maybe NetworkInterface
networkInterface = Maybe NetworkInterface
forall a. Maybe a
Prelude.Nothing,
      $sel:secondarySourceVersions:Build' :: Maybe [ProjectSourceVersion]
secondarySourceVersions = Maybe [ProjectSourceVersion]
forall a. Maybe a
Prelude.Nothing,
      $sel:currentPhase:Build' :: Maybe Text
currentPhase = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:queuedTimeoutInMinutes:Build' :: Maybe Int
queuedTimeoutInMinutes = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:cache:Build' :: Maybe ProjectCache
cache = Maybe ProjectCache
forall a. Maybe a
Prelude.Nothing,
      $sel:secondarySources:Build' :: Maybe [ProjectSource]
secondarySources = Maybe [ProjectSource]
forall a. Maybe a
Prelude.Nothing,
      $sel:debugSession:Build' :: Maybe DebugSession
debugSession = Maybe DebugSession
forall a. Maybe a
Prelude.Nothing,
      $sel:sourceVersion:Build' :: Maybe Text
sourceVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:buildBatchArn:Build' :: Maybe Text
buildBatchArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:logs:Build' :: Maybe LogsLocation
logs = Maybe LogsLocation
forall a. Maybe a
Prelude.Nothing,
      $sel:resolvedSourceVersion:Build' :: Maybe Text
resolvedSourceVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcConfig:Build' :: Maybe VpcConfig
vpcConfig = Maybe VpcConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:endTime:Build' :: Maybe POSIX
endTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:projectName:Build' :: Maybe Text
projectName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:buildStatus:Build' :: Maybe StatusType
buildStatus = Maybe StatusType
forall a. Maybe a
Prelude.Nothing,
      $sel:source:Build' :: Maybe ProjectSource
source = Maybe ProjectSource
forall a. Maybe a
Prelude.Nothing,
      $sel:id:Build' :: Maybe Text
id = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:fileSystemLocations:Build' :: Maybe [ProjectFileSystemLocation]
fileSystemLocations = Maybe [ProjectFileSystemLocation]
forall a. Maybe a
Prelude.Nothing,
      $sel:reportArns:Build' :: Maybe [Text]
reportArns = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionKey:Build' :: Maybe Text
encryptionKey = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:serviceRole:Build' :: Maybe Text
serviceRole = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:timeoutInMinutes:Build' :: Maybe Int
timeoutInMinutes = Maybe Int
forall a. Maybe a
Prelude.Nothing
    }

-- | Information about all previous build phases that are complete and
-- information about any current build phase that is not yet complete.
build_phases :: Lens.Lens' Build (Prelude.Maybe [BuildPhase])
build_phases :: (Maybe [BuildPhase] -> f (Maybe [BuildPhase])) -> Build -> f Build
build_phases = (Build -> Maybe [BuildPhase])
-> (Build -> Maybe [BuildPhase] -> Build)
-> Lens Build Build (Maybe [BuildPhase]) (Maybe [BuildPhase])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe [BuildPhase]
phases :: Maybe [BuildPhase]
$sel:phases:Build' :: Build -> Maybe [BuildPhase]
phases} -> Maybe [BuildPhase]
phases) (\s :: Build
s@Build' {} Maybe [BuildPhase]
a -> Build
s {$sel:phases:Build' :: Maybe [BuildPhase]
phases = Maybe [BuildPhase]
a} :: Build) ((Maybe [BuildPhase] -> f (Maybe [BuildPhase]))
 -> Build -> f Build)
-> ((Maybe [BuildPhase] -> f (Maybe [BuildPhase]))
    -> Maybe [BuildPhase] -> f (Maybe [BuildPhase]))
-> (Maybe [BuildPhase] -> f (Maybe [BuildPhase]))
-> Build
-> f Build
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [BuildPhase] [BuildPhase] [BuildPhase] [BuildPhase]
-> Iso
     (Maybe [BuildPhase])
     (Maybe [BuildPhase])
     (Maybe [BuildPhase])
     (Maybe [BuildPhase])
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 [BuildPhase] [BuildPhase] [BuildPhase] [BuildPhase]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Whether the build is complete. True if complete; otherwise, false.
build_buildComplete :: Lens.Lens' Build (Prelude.Maybe Prelude.Bool)
build_buildComplete :: (Maybe Bool -> f (Maybe Bool)) -> Build -> f Build
build_buildComplete = (Build -> Maybe Bool)
-> (Build -> Maybe Bool -> Build)
-> Lens Build Build (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe Bool
buildComplete :: Maybe Bool
$sel:buildComplete:Build' :: Build -> Maybe Bool
buildComplete} -> Maybe Bool
buildComplete) (\s :: Build
s@Build' {} Maybe Bool
a -> Build
s {$sel:buildComplete:Build' :: Maybe Bool
buildComplete = Maybe Bool
a} :: Build)

-- | An array of @ProjectArtifacts@ objects.
build_secondaryArtifacts :: Lens.Lens' Build (Prelude.Maybe [BuildArtifacts])
build_secondaryArtifacts :: (Maybe [BuildArtifacts] -> f (Maybe [BuildArtifacts]))
-> Build -> f Build
build_secondaryArtifacts = (Build -> Maybe [BuildArtifacts])
-> (Build -> Maybe [BuildArtifacts] -> Build)
-> Lens
     Build Build (Maybe [BuildArtifacts]) (Maybe [BuildArtifacts])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe [BuildArtifacts]
secondaryArtifacts :: Maybe [BuildArtifacts]
$sel:secondaryArtifacts:Build' :: Build -> Maybe [BuildArtifacts]
secondaryArtifacts} -> Maybe [BuildArtifacts]
secondaryArtifacts) (\s :: Build
s@Build' {} Maybe [BuildArtifacts]
a -> Build
s {$sel:secondaryArtifacts:Build' :: Maybe [BuildArtifacts]
secondaryArtifacts = Maybe [BuildArtifacts]
a} :: Build) ((Maybe [BuildArtifacts] -> f (Maybe [BuildArtifacts]))
 -> Build -> f Build)
-> ((Maybe [BuildArtifacts] -> f (Maybe [BuildArtifacts]))
    -> Maybe [BuildArtifacts] -> f (Maybe [BuildArtifacts]))
-> (Maybe [BuildArtifacts] -> f (Maybe [BuildArtifacts]))
-> Build
-> f Build
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [BuildArtifacts] [BuildArtifacts] [BuildArtifacts] [BuildArtifacts]
-> Iso
     (Maybe [BuildArtifacts])
     (Maybe [BuildArtifacts])
     (Maybe [BuildArtifacts])
     (Maybe [BuildArtifacts])
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
  [BuildArtifacts] [BuildArtifacts] [BuildArtifacts] [BuildArtifacts]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

-- | A list of exported environment variables for this build.
--
-- Exported environment variables are used in conjunction with CodePipeline
-- to export environment variables from the current build stage to
-- subsequent stages in the pipeline. For more information, see
-- <https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-variables.html Working with variables>
-- in the /CodePipeline User Guide/.
build_exportedEnvironmentVariables :: Lens.Lens' Build (Prelude.Maybe [ExportedEnvironmentVariable])
build_exportedEnvironmentVariables :: (Maybe [ExportedEnvironmentVariable]
 -> f (Maybe [ExportedEnvironmentVariable]))
-> Build -> f Build
build_exportedEnvironmentVariables = (Build -> Maybe [ExportedEnvironmentVariable])
-> (Build -> Maybe [ExportedEnvironmentVariable] -> Build)
-> Lens
     Build
     Build
     (Maybe [ExportedEnvironmentVariable])
     (Maybe [ExportedEnvironmentVariable])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe [ExportedEnvironmentVariable]
exportedEnvironmentVariables :: Maybe [ExportedEnvironmentVariable]
$sel:exportedEnvironmentVariables:Build' :: Build -> Maybe [ExportedEnvironmentVariable]
exportedEnvironmentVariables} -> Maybe [ExportedEnvironmentVariable]
exportedEnvironmentVariables) (\s :: Build
s@Build' {} Maybe [ExportedEnvironmentVariable]
a -> Build
s {$sel:exportedEnvironmentVariables:Build' :: Maybe [ExportedEnvironmentVariable]
exportedEnvironmentVariables = Maybe [ExportedEnvironmentVariable]
a} :: Build) ((Maybe [ExportedEnvironmentVariable]
  -> f (Maybe [ExportedEnvironmentVariable]))
 -> Build -> f Build)
-> ((Maybe [ExportedEnvironmentVariable]
     -> f (Maybe [ExportedEnvironmentVariable]))
    -> Maybe [ExportedEnvironmentVariable]
    -> f (Maybe [ExportedEnvironmentVariable]))
-> (Maybe [ExportedEnvironmentVariable]
    -> f (Maybe [ExportedEnvironmentVariable]))
-> Build
-> f Build
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [ExportedEnvironmentVariable]
  [ExportedEnvironmentVariable]
  [ExportedEnvironmentVariable]
  [ExportedEnvironmentVariable]
-> Iso
     (Maybe [ExportedEnvironmentVariable])
     (Maybe [ExportedEnvironmentVariable])
     (Maybe [ExportedEnvironmentVariable])
     (Maybe [ExportedEnvironmentVariable])
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
  [ExportedEnvironmentVariable]
  [ExportedEnvironmentVariable]
  [ExportedEnvironmentVariable]
  [ExportedEnvironmentVariable]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The number of the build. For each project, the @buildNumber@ of its
-- first build is @1@. The @buildNumber@ of each subsequent build is
-- incremented by @1@. If a build is deleted, the @buildNumber@ of other
-- builds does not change.
build_buildNumber :: Lens.Lens' Build (Prelude.Maybe Prelude.Integer)
build_buildNumber :: (Maybe Integer -> f (Maybe Integer)) -> Build -> f Build
build_buildNumber = (Build -> Maybe Integer)
-> (Build -> Maybe Integer -> Build)
-> Lens Build Build (Maybe Integer) (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe Integer
buildNumber :: Maybe Integer
$sel:buildNumber:Build' :: Build -> Maybe Integer
buildNumber} -> Maybe Integer
buildNumber) (\s :: Build
s@Build' {} Maybe Integer
a -> Build
s {$sel:buildNumber:Build' :: Maybe Integer
buildNumber = Maybe Integer
a} :: Build)

-- | When the build process started, expressed in Unix time format.
build_startTime :: Lens.Lens' Build (Prelude.Maybe Prelude.UTCTime)
build_startTime :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Build -> f Build
build_startTime = (Build -> Maybe POSIX)
-> (Build -> Maybe POSIX -> Build)
-> Lens Build Build (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe POSIX
startTime :: Maybe POSIX
$sel:startTime:Build' :: Build -> Maybe POSIX
startTime} -> Maybe POSIX
startTime) (\s :: Build
s@Build' {} Maybe POSIX
a -> Build
s {$sel:startTime:Build' :: Maybe POSIX
startTime = Maybe POSIX
a} :: Build) ((Maybe POSIX -> f (Maybe POSIX)) -> Build -> f Build)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Build
-> f Build
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

-- | Information about the output artifacts for the build.
build_artifacts :: Lens.Lens' Build (Prelude.Maybe BuildArtifacts)
build_artifacts :: (Maybe BuildArtifacts -> f (Maybe BuildArtifacts))
-> Build -> f Build
build_artifacts = (Build -> Maybe BuildArtifacts)
-> (Build -> Maybe BuildArtifacts -> Build)
-> Lens Build Build (Maybe BuildArtifacts) (Maybe BuildArtifacts)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe BuildArtifacts
artifacts :: Maybe BuildArtifacts
$sel:artifacts:Build' :: Build -> Maybe BuildArtifacts
artifacts} -> Maybe BuildArtifacts
artifacts) (\s :: Build
s@Build' {} Maybe BuildArtifacts
a -> Build
s {$sel:artifacts:Build' :: Maybe BuildArtifacts
artifacts = Maybe BuildArtifacts
a} :: Build)

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

-- | The entity that started the build. Valid values include:
--
-- -   If CodePipeline started the build, the pipeline\'s name (for
--     example, @codepipeline\/my-demo-pipeline@).
--
-- -   If an IAM user started the build, the user\'s name (for example,
--     @MyUserName@).
--
-- -   If the Jenkins plugin for CodeBuild started the build, the string
--     @CodeBuild-Jenkins-Plugin@.
build_initiator :: Lens.Lens' Build (Prelude.Maybe Prelude.Text)
build_initiator :: (Maybe Text -> f (Maybe Text)) -> Build -> f Build
build_initiator = (Build -> Maybe Text)
-> (Build -> Maybe Text -> Build)
-> Lens Build Build (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe Text
initiator :: Maybe Text
$sel:initiator:Build' :: Build -> Maybe Text
initiator} -> Maybe Text
initiator) (\s :: Build
s@Build' {} Maybe Text
a -> Build
s {$sel:initiator:Build' :: Maybe Text
initiator = Maybe Text
a} :: Build)

-- | Describes a network interface.
build_networkInterface :: Lens.Lens' Build (Prelude.Maybe NetworkInterface)
build_networkInterface :: (Maybe NetworkInterface -> f (Maybe NetworkInterface))
-> Build -> f Build
build_networkInterface = (Build -> Maybe NetworkInterface)
-> (Build -> Maybe NetworkInterface -> Build)
-> Lens
     Build Build (Maybe NetworkInterface) (Maybe NetworkInterface)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe NetworkInterface
networkInterface :: Maybe NetworkInterface
$sel:networkInterface:Build' :: Build -> Maybe NetworkInterface
networkInterface} -> Maybe NetworkInterface
networkInterface) (\s :: Build
s@Build' {} Maybe NetworkInterface
a -> Build
s {$sel:networkInterface:Build' :: Maybe NetworkInterface
networkInterface = Maybe NetworkInterface
a} :: Build)

-- | An array of @ProjectSourceVersion@ objects. Each @ProjectSourceVersion@
-- 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.
build_secondarySourceVersions :: Lens.Lens' Build (Prelude.Maybe [ProjectSourceVersion])
build_secondarySourceVersions :: (Maybe [ProjectSourceVersion] -> f (Maybe [ProjectSourceVersion]))
-> Build -> f Build
build_secondarySourceVersions = (Build -> Maybe [ProjectSourceVersion])
-> (Build -> Maybe [ProjectSourceVersion] -> Build)
-> Lens
     Build
     Build
     (Maybe [ProjectSourceVersion])
     (Maybe [ProjectSourceVersion])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe [ProjectSourceVersion]
secondarySourceVersions :: Maybe [ProjectSourceVersion]
$sel:secondarySourceVersions:Build' :: Build -> Maybe [ProjectSourceVersion]
secondarySourceVersions} -> Maybe [ProjectSourceVersion]
secondarySourceVersions) (\s :: Build
s@Build' {} Maybe [ProjectSourceVersion]
a -> Build
s {$sel:secondarySourceVersions:Build' :: Maybe [ProjectSourceVersion]
secondarySourceVersions = Maybe [ProjectSourceVersion]
a} :: Build) ((Maybe [ProjectSourceVersion] -> f (Maybe [ProjectSourceVersion]))
 -> Build -> f Build)
-> ((Maybe [ProjectSourceVersion]
     -> f (Maybe [ProjectSourceVersion]))
    -> Maybe [ProjectSourceVersion]
    -> f (Maybe [ProjectSourceVersion]))
-> (Maybe [ProjectSourceVersion]
    -> f (Maybe [ProjectSourceVersion]))
-> Build
-> f Build
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 current build phase.
build_currentPhase :: Lens.Lens' Build (Prelude.Maybe Prelude.Text)
build_currentPhase :: (Maybe Text -> f (Maybe Text)) -> Build -> f Build
build_currentPhase = (Build -> Maybe Text)
-> (Build -> Maybe Text -> Build)
-> Lens Build Build (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe Text
currentPhase :: Maybe Text
$sel:currentPhase:Build' :: Build -> Maybe Text
currentPhase} -> Maybe Text
currentPhase) (\s :: Build
s@Build' {} Maybe Text
a -> Build
s {$sel:currentPhase:Build' :: Maybe Text
currentPhase = Maybe Text
a} :: Build)

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

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

-- | An array of @ProjectSource@ objects.
build_secondarySources :: Lens.Lens' Build (Prelude.Maybe [ProjectSource])
build_secondarySources :: (Maybe [ProjectSource] -> f (Maybe [ProjectSource]))
-> Build -> f Build
build_secondarySources = (Build -> Maybe [ProjectSource])
-> (Build -> Maybe [ProjectSource] -> Build)
-> Lens Build Build (Maybe [ProjectSource]) (Maybe [ProjectSource])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe [ProjectSource]
secondarySources :: Maybe [ProjectSource]
$sel:secondarySources:Build' :: Build -> Maybe [ProjectSource]
secondarySources} -> Maybe [ProjectSource]
secondarySources) (\s :: Build
s@Build' {} Maybe [ProjectSource]
a -> Build
s {$sel:secondarySources:Build' :: Maybe [ProjectSource]
secondarySources = Maybe [ProjectSource]
a} :: Build) ((Maybe [ProjectSource] -> f (Maybe [ProjectSource]))
 -> Build -> f Build)
-> ((Maybe [ProjectSource] -> f (Maybe [ProjectSource]))
    -> Maybe [ProjectSource] -> f (Maybe [ProjectSource]))
-> (Maybe [ProjectSource] -> f (Maybe [ProjectSource]))
-> Build
-> f Build
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

-- | Contains information about the debug session for this build.
build_debugSession :: Lens.Lens' Build (Prelude.Maybe DebugSession)
build_debugSession :: (Maybe DebugSession -> f (Maybe DebugSession)) -> Build -> f Build
build_debugSession = (Build -> Maybe DebugSession)
-> (Build -> Maybe DebugSession -> Build)
-> Lens Build Build (Maybe DebugSession) (Maybe DebugSession)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe DebugSession
debugSession :: Maybe DebugSession
$sel:debugSession:Build' :: Build -> Maybe DebugSession
debugSession} -> Maybe DebugSession
debugSession) (\s :: Build
s@Build' {} Maybe DebugSession
a -> Build
s {$sel:debugSession:Build' :: Maybe DebugSession
debugSession = Maybe DebugSession
a} :: Build)

-- | Any version identifier for the version of the source code to be built.
-- If @sourceVersion@ is specified at the project level, then this
-- @sourceVersion@ (at the build level) takes precedence.
--
-- 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/.
build_sourceVersion :: Lens.Lens' Build (Prelude.Maybe Prelude.Text)
build_sourceVersion :: (Maybe Text -> f (Maybe Text)) -> Build -> f Build
build_sourceVersion = (Build -> Maybe Text)
-> (Build -> Maybe Text -> Build)
-> Lens Build Build (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe Text
sourceVersion :: Maybe Text
$sel:sourceVersion:Build' :: Build -> Maybe Text
sourceVersion} -> Maybe Text
sourceVersion) (\s :: Build
s@Build' {} Maybe Text
a -> Build
s {$sel:sourceVersion:Build' :: Maybe Text
sourceVersion = Maybe Text
a} :: Build)

-- | The ARN of the batch build that this build is a member of, if
-- applicable.
build_buildBatchArn :: Lens.Lens' Build (Prelude.Maybe Prelude.Text)
build_buildBatchArn :: (Maybe Text -> f (Maybe Text)) -> Build -> f Build
build_buildBatchArn = (Build -> Maybe Text)
-> (Build -> Maybe Text -> Build)
-> Lens Build Build (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe Text
buildBatchArn :: Maybe Text
$sel:buildBatchArn:Build' :: Build -> Maybe Text
buildBatchArn} -> Maybe Text
buildBatchArn) (\s :: Build
s@Build' {} Maybe Text
a -> Build
s {$sel:buildBatchArn:Build' :: Maybe Text
buildBatchArn = Maybe Text
a} :: Build)

-- | Information about the build\'s logs in CloudWatch Logs.
build_logs :: Lens.Lens' Build (Prelude.Maybe LogsLocation)
build_logs :: (Maybe LogsLocation -> f (Maybe LogsLocation)) -> Build -> f Build
build_logs = (Build -> Maybe LogsLocation)
-> (Build -> Maybe LogsLocation -> Build)
-> Lens Build Build (Maybe LogsLocation) (Maybe LogsLocation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe LogsLocation
logs :: Maybe LogsLocation
$sel:logs:Build' :: Build -> Maybe LogsLocation
logs} -> Maybe LogsLocation
logs) (\s :: Build
s@Build' {} Maybe LogsLocation
a -> Build
s {$sel:logs:Build' :: Maybe LogsLocation
logs = Maybe LogsLocation
a} :: Build)

-- | An identifier for the version of this build\'s source code.
--
-- -   For CodeCommit, GitHub, GitHub Enterprise, and BitBucket, the commit
--     ID.
--
-- -   For CodePipeline, the source revision provided by CodePipeline.
--
-- -   For Amazon S3, this does not apply.
build_resolvedSourceVersion :: Lens.Lens' Build (Prelude.Maybe Prelude.Text)
build_resolvedSourceVersion :: (Maybe Text -> f (Maybe Text)) -> Build -> f Build
build_resolvedSourceVersion = (Build -> Maybe Text)
-> (Build -> Maybe Text -> Build)
-> Lens Build Build (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe Text
resolvedSourceVersion :: Maybe Text
$sel:resolvedSourceVersion:Build' :: Build -> Maybe Text
resolvedSourceVersion} -> Maybe Text
resolvedSourceVersion) (\s :: Build
s@Build' {} Maybe Text
a -> Build
s {$sel:resolvedSourceVersion:Build' :: Maybe Text
resolvedSourceVersion = Maybe Text
a} :: Build)

-- | If your CodeBuild project accesses resources in an Amazon VPC, you
-- provide this parameter that identifies the VPC ID and the list of
-- security group IDs and subnet IDs. The security groups and subnets must
-- belong to the same VPC. You must provide at least one security group and
-- one subnet ID.
build_vpcConfig :: Lens.Lens' Build (Prelude.Maybe VpcConfig)
build_vpcConfig :: (Maybe VpcConfig -> f (Maybe VpcConfig)) -> Build -> f Build
build_vpcConfig = (Build -> Maybe VpcConfig)
-> (Build -> Maybe VpcConfig -> Build)
-> Lens Build Build (Maybe VpcConfig) (Maybe VpcConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe VpcConfig
vpcConfig :: Maybe VpcConfig
$sel:vpcConfig:Build' :: Build -> Maybe VpcConfig
vpcConfig} -> Maybe VpcConfig
vpcConfig) (\s :: Build
s@Build' {} Maybe VpcConfig
a -> Build
s {$sel:vpcConfig:Build' :: Maybe VpcConfig
vpcConfig = Maybe VpcConfig
a} :: Build)

-- | When the build process ended, expressed in Unix time format.
build_endTime :: Lens.Lens' Build (Prelude.Maybe Prelude.UTCTime)
build_endTime :: (Maybe UTCTime -> f (Maybe UTCTime)) -> Build -> f Build
build_endTime = (Build -> Maybe POSIX)
-> (Build -> Maybe POSIX -> Build)
-> Lens Build Build (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe POSIX
endTime :: Maybe POSIX
$sel:endTime:Build' :: Build -> Maybe POSIX
endTime} -> Maybe POSIX
endTime) (\s :: Build
s@Build' {} Maybe POSIX
a -> Build
s {$sel:endTime:Build' :: Maybe POSIX
endTime = Maybe POSIX
a} :: Build) ((Maybe POSIX -> f (Maybe POSIX)) -> Build -> f Build)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> Build
-> f Build
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 name of the CodeBuild project.
build_projectName :: Lens.Lens' Build (Prelude.Maybe Prelude.Text)
build_projectName :: (Maybe Text -> f (Maybe Text)) -> Build -> f Build
build_projectName = (Build -> Maybe Text)
-> (Build -> Maybe Text -> Build)
-> Lens Build Build (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe Text
projectName :: Maybe Text
$sel:projectName:Build' :: Build -> Maybe Text
projectName} -> Maybe Text
projectName) (\s :: Build
s@Build' {} Maybe Text
a -> Build
s {$sel:projectName:Build' :: Maybe Text
projectName = Maybe Text
a} :: Build)

-- | The current status of the build. Valid values include:
--
-- -   @FAILED@: The build failed.
--
-- -   @FAULT@: The build faulted.
--
-- -   @IN_PROGRESS@: The build is still in progress.
--
-- -   @STOPPED@: The build stopped.
--
-- -   @SUCCEEDED@: The build succeeded.
--
-- -   @TIMED_OUT@: The build timed out.
build_buildStatus :: Lens.Lens' Build (Prelude.Maybe StatusType)
build_buildStatus :: (Maybe StatusType -> f (Maybe StatusType)) -> Build -> f Build
build_buildStatus = (Build -> Maybe StatusType)
-> (Build -> Maybe StatusType -> Build)
-> Lens Build Build (Maybe StatusType) (Maybe StatusType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe StatusType
buildStatus :: Maybe StatusType
$sel:buildStatus:Build' :: Build -> Maybe StatusType
buildStatus} -> Maybe StatusType
buildStatus) (\s :: Build
s@Build' {} Maybe StatusType
a -> Build
s {$sel:buildStatus:Build' :: Maybe StatusType
buildStatus = Maybe StatusType
a} :: Build)

-- | Information about the source code to be built.
build_source :: Lens.Lens' Build (Prelude.Maybe ProjectSource)
build_source :: (Maybe ProjectSource -> f (Maybe ProjectSource))
-> Build -> f Build
build_source = (Build -> Maybe ProjectSource)
-> (Build -> Maybe ProjectSource -> Build)
-> Lens Build Build (Maybe ProjectSource) (Maybe ProjectSource)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe ProjectSource
source :: Maybe ProjectSource
$sel:source:Build' :: Build -> Maybe ProjectSource
source} -> Maybe ProjectSource
source) (\s :: Build
s@Build' {} Maybe ProjectSource
a -> Build
s {$sel:source:Build' :: Maybe ProjectSource
source = Maybe ProjectSource
a} :: Build)

-- | The unique ID for the build.
build_id :: Lens.Lens' Build (Prelude.Maybe Prelude.Text)
build_id :: (Maybe Text -> f (Maybe Text)) -> Build -> f Build
build_id = (Build -> Maybe Text)
-> (Build -> Maybe Text -> Build)
-> Lens Build Build (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe Text
id :: Maybe Text
$sel:id:Build' :: Build -> Maybe Text
id} -> Maybe Text
id) (\s :: Build
s@Build' {} Maybe Text
a -> Build
s {$sel:id:Build' :: Maybe Text
id = Maybe Text
a} :: Build)

-- | 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.
build_fileSystemLocations :: Lens.Lens' Build (Prelude.Maybe [ProjectFileSystemLocation])
build_fileSystemLocations :: (Maybe [ProjectFileSystemLocation]
 -> f (Maybe [ProjectFileSystemLocation]))
-> Build -> f Build
build_fileSystemLocations = (Build -> Maybe [ProjectFileSystemLocation])
-> (Build -> Maybe [ProjectFileSystemLocation] -> Build)
-> Lens
     Build
     Build
     (Maybe [ProjectFileSystemLocation])
     (Maybe [ProjectFileSystemLocation])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe [ProjectFileSystemLocation]
fileSystemLocations :: Maybe [ProjectFileSystemLocation]
$sel:fileSystemLocations:Build' :: Build -> Maybe [ProjectFileSystemLocation]
fileSystemLocations} -> Maybe [ProjectFileSystemLocation]
fileSystemLocations) (\s :: Build
s@Build' {} Maybe [ProjectFileSystemLocation]
a -> Build
s {$sel:fileSystemLocations:Build' :: Maybe [ProjectFileSystemLocation]
fileSystemLocations = Maybe [ProjectFileSystemLocation]
a} :: Build) ((Maybe [ProjectFileSystemLocation]
  -> f (Maybe [ProjectFileSystemLocation]))
 -> Build -> f Build)
-> ((Maybe [ProjectFileSystemLocation]
     -> f (Maybe [ProjectFileSystemLocation]))
    -> Maybe [ProjectFileSystemLocation]
    -> f (Maybe [ProjectFileSystemLocation]))
-> (Maybe [ProjectFileSystemLocation]
    -> f (Maybe [ProjectFileSystemLocation]))
-> Build
-> f Build
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

-- | An array of the ARNs associated with this build\'s reports.
build_reportArns :: Lens.Lens' Build (Prelude.Maybe [Prelude.Text])
build_reportArns :: (Maybe [Text] -> f (Maybe [Text])) -> Build -> f Build
build_reportArns = (Build -> Maybe [Text])
-> (Build -> Maybe [Text] -> Build)
-> Lens Build Build (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe [Text]
reportArns :: Maybe [Text]
$sel:reportArns:Build' :: Build -> Maybe [Text]
reportArns} -> Maybe [Text]
reportArns) (\s :: Build
s@Build' {} Maybe [Text]
a -> Build
s {$sel:reportArns:Build' :: Maybe [Text]
reportArns = Maybe [Text]
a} :: Build) ((Maybe [Text] -> f (Maybe [Text])) -> Build -> f Build)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> Build
-> f Build
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | 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>@).
build_encryptionKey :: Lens.Lens' Build (Prelude.Maybe Prelude.Text)
build_encryptionKey :: (Maybe Text -> f (Maybe Text)) -> Build -> f Build
build_encryptionKey = (Build -> Maybe Text)
-> (Build -> Maybe Text -> Build)
-> Lens Build Build (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe Text
encryptionKey :: Maybe Text
$sel:encryptionKey:Build' :: Build -> Maybe Text
encryptionKey} -> Maybe Text
encryptionKey) (\s :: Build
s@Build' {} Maybe Text
a -> Build
s {$sel:encryptionKey:Build' :: Maybe Text
encryptionKey = Maybe Text
a} :: Build)

-- | The name of a service role used for this build.
build_serviceRole :: Lens.Lens' Build (Prelude.Maybe Prelude.Text)
build_serviceRole :: (Maybe Text -> f (Maybe Text)) -> Build -> f Build
build_serviceRole = (Build -> Maybe Text)
-> (Build -> Maybe Text -> Build)
-> Lens Build Build (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe Text
serviceRole :: Maybe Text
$sel:serviceRole:Build' :: Build -> Maybe Text
serviceRole} -> Maybe Text
serviceRole) (\s :: Build
s@Build' {} Maybe Text
a -> Build
s {$sel:serviceRole:Build' :: Maybe Text
serviceRole = Maybe Text
a} :: Build)

-- | How long, in minutes, for CodeBuild to wait before timing out this build
-- if it does not get marked as completed.
build_timeoutInMinutes :: Lens.Lens' Build (Prelude.Maybe Prelude.Int)
build_timeoutInMinutes :: (Maybe Int -> f (Maybe Int)) -> Build -> f Build
build_timeoutInMinutes = (Build -> Maybe Int)
-> (Build -> Maybe Int -> Build)
-> Lens Build Build (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Build' {Maybe Int
timeoutInMinutes :: Maybe Int
$sel:timeoutInMinutes:Build' :: Build -> Maybe Int
timeoutInMinutes} -> Maybe Int
timeoutInMinutes) (\s :: Build
s@Build' {} Maybe Int
a -> Build
s {$sel:timeoutInMinutes:Build' :: Maybe Int
timeoutInMinutes = Maybe Int
a} :: Build)

instance Core.FromJSON Build where
  parseJSON :: Value -> Parser Build
parseJSON =
    String -> (Object -> Parser Build) -> Value -> Parser Build
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"Build"
      ( \Object
x ->
          Maybe [BuildPhase]
-> Maybe Bool
-> Maybe [BuildArtifacts]
-> Maybe Text
-> Maybe [ExportedEnvironmentVariable]
-> Maybe Integer
-> Maybe POSIX
-> Maybe BuildArtifacts
-> Maybe ProjectEnvironment
-> Maybe Text
-> Maybe NetworkInterface
-> Maybe [ProjectSourceVersion]
-> Maybe Text
-> Maybe Int
-> Maybe ProjectCache
-> Maybe [ProjectSource]
-> Maybe DebugSession
-> Maybe Text
-> Maybe Text
-> Maybe LogsLocation
-> Maybe Text
-> Maybe VpcConfig
-> Maybe POSIX
-> Maybe Text
-> Maybe StatusType
-> Maybe ProjectSource
-> Maybe Text
-> Maybe [ProjectFileSystemLocation]
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Build
Build'
            (Maybe [BuildPhase]
 -> Maybe Bool
 -> Maybe [BuildArtifacts]
 -> Maybe Text
 -> Maybe [ExportedEnvironmentVariable]
 -> Maybe Integer
 -> Maybe POSIX
 -> Maybe BuildArtifacts
 -> Maybe ProjectEnvironment
 -> Maybe Text
 -> Maybe NetworkInterface
 -> Maybe [ProjectSourceVersion]
 -> Maybe Text
 -> Maybe Int
 -> Maybe ProjectCache
 -> Maybe [ProjectSource]
 -> Maybe DebugSession
 -> Maybe Text
 -> Maybe Text
 -> Maybe LogsLocation
 -> Maybe Text
 -> Maybe VpcConfig
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe StatusType
 -> Maybe ProjectSource
 -> Maybe Text
 -> Maybe [ProjectFileSystemLocation]
 -> Maybe [Text]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Int
 -> Build)
-> Parser (Maybe [BuildPhase])
-> Parser
     (Maybe Bool
      -> Maybe [BuildArtifacts]
      -> Maybe Text
      -> Maybe [ExportedEnvironmentVariable]
      -> Maybe Integer
      -> Maybe POSIX
      -> Maybe BuildArtifacts
      -> Maybe ProjectEnvironment
      -> Maybe Text
      -> Maybe NetworkInterface
      -> Maybe [ProjectSourceVersion]
      -> Maybe Text
      -> Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe (Maybe [BuildPhase]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"phases" Parser (Maybe (Maybe [BuildPhase]))
-> Maybe [BuildPhase] -> Parser (Maybe [BuildPhase])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [BuildPhase]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Bool
   -> Maybe [BuildArtifacts]
   -> Maybe Text
   -> Maybe [ExportedEnvironmentVariable]
   -> Maybe Integer
   -> Maybe POSIX
   -> Maybe BuildArtifacts
   -> Maybe ProjectEnvironment
   -> Maybe Text
   -> Maybe NetworkInterface
   -> Maybe [ProjectSourceVersion]
   -> Maybe Text
   -> Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe Bool)
-> Parser
     (Maybe [BuildArtifacts]
      -> Maybe Text
      -> Maybe [ExportedEnvironmentVariable]
      -> Maybe Integer
      -> Maybe POSIX
      -> Maybe BuildArtifacts
      -> Maybe ProjectEnvironment
      -> Maybe Text
      -> Maybe NetworkInterface
      -> Maybe [ProjectSourceVersion]
      -> Maybe Text
      -> Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"buildComplete")
            Parser
  (Maybe [BuildArtifacts]
   -> Maybe Text
   -> Maybe [ExportedEnvironmentVariable]
   -> Maybe Integer
   -> Maybe POSIX
   -> Maybe BuildArtifacts
   -> Maybe ProjectEnvironment
   -> Maybe Text
   -> Maybe NetworkInterface
   -> Maybe [ProjectSourceVersion]
   -> Maybe Text
   -> Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe [BuildArtifacts])
-> Parser
     (Maybe Text
      -> Maybe [ExportedEnvironmentVariable]
      -> Maybe Integer
      -> Maybe POSIX
      -> Maybe BuildArtifacts
      -> Maybe ProjectEnvironment
      -> Maybe Text
      -> Maybe NetworkInterface
      -> Maybe [ProjectSourceVersion]
      -> Maybe Text
      -> Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [BuildArtifacts]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"secondaryArtifacts"
                            Parser (Maybe (Maybe [BuildArtifacts]))
-> Maybe [BuildArtifacts] -> Parser (Maybe [BuildArtifacts])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [BuildArtifacts]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Text
   -> Maybe [ExportedEnvironmentVariable]
   -> Maybe Integer
   -> Maybe POSIX
   -> Maybe BuildArtifacts
   -> Maybe ProjectEnvironment
   -> Maybe Text
   -> Maybe NetworkInterface
   -> Maybe [ProjectSourceVersion]
   -> Maybe Text
   -> Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe Text)
-> Parser
     (Maybe [ExportedEnvironmentVariable]
      -> Maybe Integer
      -> Maybe POSIX
      -> Maybe BuildArtifacts
      -> Maybe ProjectEnvironment
      -> Maybe Text
      -> Maybe NetworkInterface
      -> Maybe [ProjectSourceVersion]
      -> Maybe Text
      -> Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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 [ExportedEnvironmentVariable]
   -> Maybe Integer
   -> Maybe POSIX
   -> Maybe BuildArtifacts
   -> Maybe ProjectEnvironment
   -> Maybe Text
   -> Maybe NetworkInterface
   -> Maybe [ProjectSourceVersion]
   -> Maybe Text
   -> Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe [ExportedEnvironmentVariable])
-> Parser
     (Maybe Integer
      -> Maybe POSIX
      -> Maybe BuildArtifacts
      -> Maybe ProjectEnvironment
      -> Maybe Text
      -> Maybe NetworkInterface
      -> Maybe [ProjectSourceVersion]
      -> Maybe Text
      -> Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object
-> Text -> Parser (Maybe (Maybe [ExportedEnvironmentVariable]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"exportedEnvironmentVariables"
                            Parser (Maybe (Maybe [ExportedEnvironmentVariable]))
-> Maybe [ExportedEnvironmentVariable]
-> Parser (Maybe [ExportedEnvironmentVariable])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [ExportedEnvironmentVariable]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Integer
   -> Maybe POSIX
   -> Maybe BuildArtifacts
   -> Maybe ProjectEnvironment
   -> Maybe Text
   -> Maybe NetworkInterface
   -> Maybe [ProjectSourceVersion]
   -> Maybe Text
   -> Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe Integer)
-> Parser
     (Maybe POSIX
      -> Maybe BuildArtifacts
      -> Maybe ProjectEnvironment
      -> Maybe Text
      -> Maybe NetworkInterface
      -> Maybe [ProjectSourceVersion]
      -> Maybe Text
      -> Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"buildNumber")
            Parser
  (Maybe POSIX
   -> Maybe BuildArtifacts
   -> Maybe ProjectEnvironment
   -> Maybe Text
   -> Maybe NetworkInterface
   -> Maybe [ProjectSourceVersion]
   -> Maybe Text
   -> Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe BuildArtifacts
      -> Maybe ProjectEnvironment
      -> Maybe Text
      -> Maybe NetworkInterface
      -> Maybe [ProjectSourceVersion]
      -> Maybe Text
      -> Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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
"startTime")
            Parser
  (Maybe BuildArtifacts
   -> Maybe ProjectEnvironment
   -> Maybe Text
   -> Maybe NetworkInterface
   -> Maybe [ProjectSourceVersion]
   -> Maybe Text
   -> Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe BuildArtifacts)
-> Parser
     (Maybe ProjectEnvironment
      -> Maybe Text
      -> Maybe NetworkInterface
      -> Maybe [ProjectSourceVersion]
      -> Maybe Text
      -> Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe BuildArtifacts)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"artifacts")
            Parser
  (Maybe ProjectEnvironment
   -> Maybe Text
   -> Maybe NetworkInterface
   -> Maybe [ProjectSourceVersion]
   -> Maybe Text
   -> Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe ProjectEnvironment)
-> Parser
     (Maybe Text
      -> Maybe NetworkInterface
      -> Maybe [ProjectSourceVersion]
      -> Maybe Text
      -> Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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 Text
   -> Maybe NetworkInterface
   -> Maybe [ProjectSourceVersion]
   -> Maybe Text
   -> Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe Text)
-> Parser
     (Maybe NetworkInterface
      -> Maybe [ProjectSourceVersion]
      -> Maybe Text
      -> Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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
"initiator")
            Parser
  (Maybe NetworkInterface
   -> Maybe [ProjectSourceVersion]
   -> Maybe Text
   -> Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe NetworkInterface)
-> Parser
     (Maybe [ProjectSourceVersion]
      -> Maybe Text
      -> Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NetworkInterface)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"networkInterface")
            Parser
  (Maybe [ProjectSourceVersion]
   -> Maybe Text
   -> Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe [ProjectSourceVersion])
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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 Text
   -> Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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
"currentPhase")
            Parser
  (Maybe Int
   -> Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe Int)
-> Parser
     (Maybe ProjectCache
      -> Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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
"queuedTimeoutInMinutes")
            Parser
  (Maybe ProjectCache
   -> Maybe [ProjectSource]
   -> Maybe DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe ProjectCache)
-> Parser
     (Maybe [ProjectSource]
      -> Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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 DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe [ProjectSource])
-> Parser
     (Maybe DebugSession
      -> Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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 DebugSession
   -> Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe DebugSession)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DebugSession)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"debugSession")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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 LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe Text)
-> Parser
     (Maybe LogsLocation
      -> Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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
"buildBatchArn")
            Parser
  (Maybe LogsLocation
   -> Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe LogsLocation)
-> Parser
     (Maybe Text
      -> Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LogsLocation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"logs")
            Parser
  (Maybe Text
   -> Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe Text)
-> Parser
     (Maybe VpcConfig
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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
"resolvedSourceVersion")
            Parser
  (Maybe VpcConfig
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe VpcConfig)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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 POSIX
   -> Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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
"endTime")
            Parser
  (Maybe Text
   -> Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe Text)
-> Parser
     (Maybe StatusType
      -> Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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
"projectName")
            Parser
  (Maybe StatusType
   -> Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe StatusType)
-> Parser
     (Maybe ProjectSource
      -> Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe StatusType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"buildStatus")
            Parser
  (Maybe ProjectSource
   -> Maybe Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe ProjectSource)
-> Parser
     (Maybe Text
      -> Maybe [ProjectFileSystemLocation]
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Build)
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 Text
   -> Maybe [ProjectFileSystemLocation]
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Build)
-> Parser (Maybe Text)
-> Parser
     (Maybe [ProjectFileSystemLocation]
      -> Maybe [Text] -> Maybe Text -> Maybe Text -> Maybe Int -> Build)
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
"id")
            Parser
  (Maybe [ProjectFileSystemLocation]
   -> Maybe [Text] -> Maybe Text -> Maybe Text -> Maybe Int -> Build)
-> Parser (Maybe [ProjectFileSystemLocation])
-> Parser
     (Maybe [Text] -> Maybe Text -> Maybe Text -> Maybe Int -> Build)
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 [Text] -> Maybe Text -> Maybe Text -> Maybe Int -> Build)
-> Parser (Maybe [Text])
-> Parser (Maybe Text -> Maybe Text -> Maybe Int -> Build)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"reportArns" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Parser (Maybe Text -> Maybe Text -> Maybe Int -> Build)
-> Parser (Maybe Text) -> Parser (Maybe Text -> Maybe Int -> Build)
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 Text -> Maybe Int -> Build)
-> Parser (Maybe Text) -> Parser (Maybe Int -> Build)
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 Int -> Build) -> Parser (Maybe Int) -> Parser Build
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
"timeoutInMinutes")
      )

instance Prelude.Hashable Build

instance Prelude.NFData Build