Module: Pangea::Types

Defined in:
lib/pangea/types/registry.rb,
lib/pangea/types/base_types.rb,
lib/pangea/types/domain_types.rb

Defined Under Namespace

Modules: BaseTypes Classes: Registry

Constant Summary collapse

StrippedString =

Basic types with coercion

Coercible::String.constructor(&:strip)
SymbolizedString =
Coercible::Symbol
Path =
Coercible::String.constrained(min_size: 1)
JSONHash =

JSON/Hash types

Strict::Hash
SymbolizedHash =
Strict::Hash.constructor do |value|
  case value
  when Hash
    value.transform_keys(&:to_sym).transform_values do |v|
      if v.respond_to?(:transform_keys)
        v.transform_keys(&:to_sym)
      else
        v
      end
    end
  when String then JSON.parse(value, symbolize_names: true)
  else value
  end
end
Identifier =

Domain-specific identifiers

Strict::String.constrained(
  format: /\A[a-z][a-z0-9_-]*\z/,
  min_size: 1,
  max_size: 63
)
NamespaceString =
Identifier
ProjectString =
Identifier
SiteString =
Identifier
ModuleName =
Identifier
FilePath =

File system types

Strict::String.constrained(min_size: 1)
DirectoryPath =
FilePath
FileName =
Strict::String.constrained(
  format: /\A[a-zA-Z0-9._-]+\z/,
  min_size: 1
)
StateBackendType =

State backend configuration

Strict::Symbol.enum(:s3, :local)
TerraformAction =

Terraform/OpenTofu types

Strict::Symbol.enum(:plan, :apply, :destroy, :init)
TerraformVersion =
Strict::String.constrained(
  format: /\A\d+\.\d+\.\d+\z/
)
ConfigFormat =

Configuration file types

Strict::Symbol.enum(:yaml, :yml, :json, :toml, :rb)
TerraformJSON =

Template and synthesis types

Strict::Hash
ResourceType =
Strict::String.constrained(
  format: /\A[a-z][a-z0-9_]*\z/
)
ResourceName =
Identifier
EnvironmentVariable =

Environment variables

Strict::String.constrained(
  format: /\A[A-Z][A-Z0-9_]*\z/
)
Version =

Semantic versioning

Strict::String.constrained(
  format: /\A\d+\.\d+\.\d+(-[a-z0-9]+)?\z/
)
HttpUrl =

URL types

Strict::String.constrained(
  format: %r{\Ahttps?://[^\s]+\z}
)
GitUrl =
Strict::String.constrained(
  format: %r{\A(https?://|git@|git://)[^\s]+\.git\z}
)
StringArray =

Arrays

Strict::Array.of(Strict::String)
IdentifierArray =
Strict::Array.of(Identifier)
ModuleArray =
Strict::Array.of(ModuleName)
OptionalString =

Optional types

Strict::String.optional
OptionalIdentifier =
Identifier.optional
OptionalPath =
FilePath.optional