Description
This module defines the base configuration and utilities for constructing Buildkite command steps in Dhall. It provides a `Config` type for specifying command step properties, a `build` function to convert the configuration into a Buildkite command step, and various dependencies and helper modules. Key components: - `Config.Type`: Represents the configuration for a Buildkite command step. - `Config.default`: Provides default values for the configuration. - `build`: A function that transforms a `Config.Type` into a `B/Command.Type`. Dependencies: - External modules like `Buildkite`, `Cmds`, `Decorate`, and various plugins. - Helper modules for handling retries, artifact paths, dependencies, and more. This module is intended to simplify the creation and management of Buildkite command steps by providing a structured and reusable configuration interface.Source
let B = ../External/Buildkite.dhall let Retry = ./Retry.dhall let Cmd = ../Lib/Cmds.dhall let Decorate = ../Lib/Decorate.dhall let SelectFiles = ../Lib/SelectFiles.dhall let Docker = ../Plugin/Docker/Type.dhall let DockerLogin = ../Plugin/DockerLogin/Type.dhall let Summon = ../Plugin/Summon/Type.dhall let Plugins = ../Plugin/Type.dhall let Size = ./Size.dhall let ArtifactPaths = ./ArtifactPaths.dhall let DependsOn = ./DependsOn.dhall let TaggedKey = ./TaggedKey.dhall let B/SoftFail = B.definitions/commandStep/properties/soft_fail/Type let B/Skip = B.definitions/commandStep/properties/skip/Type let B/If = B.definitions/commandStep/properties/if/Type let B/Command = B.definitions/commandStep/Type Text Text Plugins.Type Plugins.Type let Config = { Type = { commands : List Cmd.Type , depends_on : List TaggedKey.Type , artifact_paths : List SelectFiles.Type , env : List TaggedKey.Type , label : Text , key : Text , target : Size.Type , docker : Optional Docker.Type , docker_login : Optional DockerLogin.Type , summon : Optional Summon.Type , retries : List Retry.Type , flake_retry_limit : Optional Natural , soft_fail : Optional B/SoftFail , skip : Optional B/Skip , `if` : Optional B/If , timeout_in_minutes : Optional Integer } , default = { depends_on = [] : List TaggedKey.Type , docker = None Docker.Type , docker_login = None DockerLogin.Type , summon = None Summon.Type , artifact_paths = [] : List SelectFiles.Type , env = [] : List TaggedKey.Type , retries = [] : List Retry.Type , flake_retry_limit = Some 0 , soft_fail = None B/SoftFail , skip = None B/Skip , `if` = None B/If , timeout_in_minutes = None Integer } } let build : Config.Type -> B/Command.Type = \(c : Config.Type) -> B/Command::{ , agents = Size.toAgent c.target , commands = B.definitions/commandStep/properties/commands/Type.ListString (Decorate.decorateAll c.commands) , depends_on = DependsOn.ofTaggedKeys c.depends_on , artifact_paths = ArtifactPaths c.artifact_paths , key = Some c.key , label = Some c.label , timeout_in_minutes = c.timeout_in_minutes , retry = Some (Retry.build c.flake_retry_limit c.retries) , soft_fail = c.soft_fail , skip = c.skip , `if` = c.`if` , plugins = Plugins.build c.docker c.docker_login c.summon } in { Config, build, Type = B/Command.Type }