amazonka-codeartifact-2.0: gen/Amazonka/CodeArtifact/Types/PackageDependency.hs
{-# 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.CodeArtifact.Types.PackageDependency
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CodeArtifact.Types.PackageDependency where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
-- | Details about a package dependency.
--
-- /See:/ 'newPackageDependency' smart constructor.
data PackageDependency = PackageDependency'
{ -- | The type of a package dependency. The possible values depend on the
-- package type. Example types are @compile@, @runtime@, and @test@ for
-- Maven packages, and @dev@, @prod@, and @optional@ for npm packages.
dependencyType :: Prelude.Maybe Prelude.Text,
-- | The namespace of the package that this package depends on. The package
-- component that specifies its namespace depends on its type. For example:
--
-- - The namespace of a Maven package is its @groupId@.
--
-- - The namespace of an npm package is its @scope@.
--
-- - Python and NuGet packages do not contain a corresponding component,
-- packages of those formats do not have a namespace.
namespace :: Prelude.Maybe Prelude.Text,
-- | The name of the package that this package depends on.
package :: Prelude.Maybe Prelude.Text,
-- | The required version, or version range, of the package that this package
-- depends on. The version format is specific to the package type. For
-- example, the following are possible valid required versions: @1.2.3@,
-- @^2.3.4@, or @4.x@.
versionRequirement :: Prelude.Maybe Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'PackageDependency' 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:
--
-- 'dependencyType', 'packageDependency_dependencyType' - The type of a package dependency. The possible values depend on the
-- package type. Example types are @compile@, @runtime@, and @test@ for
-- Maven packages, and @dev@, @prod@, and @optional@ for npm packages.
--
-- 'namespace', 'packageDependency_namespace' - The namespace of the package that this package depends on. The package
-- component that specifies its namespace depends on its type. For example:
--
-- - The namespace of a Maven package is its @groupId@.
--
-- - The namespace of an npm package is its @scope@.
--
-- - Python and NuGet packages do not contain a corresponding component,
-- packages of those formats do not have a namespace.
--
-- 'package', 'packageDependency_package' - The name of the package that this package depends on.
--
-- 'versionRequirement', 'packageDependency_versionRequirement' - The required version, or version range, of the package that this package
-- depends on. The version format is specific to the package type. For
-- example, the following are possible valid required versions: @1.2.3@,
-- @^2.3.4@, or @4.x@.
newPackageDependency ::
PackageDependency
newPackageDependency =
PackageDependency'
{ dependencyType =
Prelude.Nothing,
namespace = Prelude.Nothing,
package = Prelude.Nothing,
versionRequirement = Prelude.Nothing
}
-- | The type of a package dependency. The possible values depend on the
-- package type. Example types are @compile@, @runtime@, and @test@ for
-- Maven packages, and @dev@, @prod@, and @optional@ for npm packages.
packageDependency_dependencyType :: Lens.Lens' PackageDependency (Prelude.Maybe Prelude.Text)
packageDependency_dependencyType = Lens.lens (\PackageDependency' {dependencyType} -> dependencyType) (\s@PackageDependency' {} a -> s {dependencyType = a} :: PackageDependency)
-- | The namespace of the package that this package depends on. The package
-- component that specifies its namespace depends on its type. For example:
--
-- - The namespace of a Maven package is its @groupId@.
--
-- - The namespace of an npm package is its @scope@.
--
-- - Python and NuGet packages do not contain a corresponding component,
-- packages of those formats do not have a namespace.
packageDependency_namespace :: Lens.Lens' PackageDependency (Prelude.Maybe Prelude.Text)
packageDependency_namespace = Lens.lens (\PackageDependency' {namespace} -> namespace) (\s@PackageDependency' {} a -> s {namespace = a} :: PackageDependency)
-- | The name of the package that this package depends on.
packageDependency_package :: Lens.Lens' PackageDependency (Prelude.Maybe Prelude.Text)
packageDependency_package = Lens.lens (\PackageDependency' {package} -> package) (\s@PackageDependency' {} a -> s {package = a} :: PackageDependency)
-- | The required version, or version range, of the package that this package
-- depends on. The version format is specific to the package type. For
-- example, the following are possible valid required versions: @1.2.3@,
-- @^2.3.4@, or @4.x@.
packageDependency_versionRequirement :: Lens.Lens' PackageDependency (Prelude.Maybe Prelude.Text)
packageDependency_versionRequirement = Lens.lens (\PackageDependency' {versionRequirement} -> versionRequirement) (\s@PackageDependency' {} a -> s {versionRequirement = a} :: PackageDependency)
instance Data.FromJSON PackageDependency where
parseJSON =
Data.withObject
"PackageDependency"
( \x ->
PackageDependency'
Prelude.<$> (x Data..:? "dependencyType")
Prelude.<*> (x Data..:? "namespace")
Prelude.<*> (x Data..:? "package")
Prelude.<*> (x Data..:? "versionRequirement")
)
instance Prelude.Hashable PackageDependency where
hashWithSalt _salt PackageDependency' {..} =
_salt
`Prelude.hashWithSalt` dependencyType
`Prelude.hashWithSalt` namespace
`Prelude.hashWithSalt` package
`Prelude.hashWithSalt` versionRequirement
instance Prelude.NFData PackageDependency where
rnf PackageDependency' {..} =
Prelude.rnf dependencyType
`Prelude.seq` Prelude.rnf namespace
`Prelude.seq` Prelude.rnf package
`Prelude.seq` Prelude.rnf versionRequirement