packages feed

hercules-ci-api-agent-0.4.2.0: src/Hercules/API/Agent/Evaluate/EvaluateTask.hs

{-# LANGUAGE DeriveAnyClass #-}

module Hercules.API.Agent.Evaluate.EvaluateTask where

import Data.Aeson (Value)
import Hercules.API.Agent.Evaluate.ImmutableInput (ImmutableInput)
import Hercules.API.Prelude
import Hercules.API.Task (Task)

data EvaluateTask = EvaluateTask
  { id :: Id (Task EvaluateTask),
    primaryInput :: Text, -- Obsolete since >= 0.8
    otherInputs :: Map Identifier Text, -- identifier -> HTTP URL
    inputMetadata :: Map Identifier (Map Text Value),
    autoArguments :: Map Text (SubPathOf Identifier), -- argument name -> identifier
    nixPath :: [NixPathElement (SubPathOf Identifier)], -- NIX_PATH element -> identifier
    logToken :: Text,
    selector :: Selector,
    ciSystems :: Maybe (Map Text ()),
    extraGitCredentials :: Maybe [Credential]
  }
  deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON)

data Credential = Credential
  { url :: Text,
    username :: Text,
    password :: Text
  }
  deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON)

data Selector
  = ConfigOrLegacy
  | OnPush OnPush
  deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON)

data OnPush = MkOnPush
  { name :: Text,
    inputs :: Map Text ImmutableInput
  }
  deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON)

type Identifier = Text

data NixPathElement a = NixPathElement
  { -- | for example @/home/user/nixpkgs@ in @/home/user/nixpkgs:/etc/nixos/foo@
    prefix :: Maybe Text,
    value :: a
  }
  deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON, Functor, Foldable, Traversable)

-- | For using a path inside a source
data SubPathOf a = SubPathOf
  { path :: a,
    subPath :: Maybe Text
  }
  deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON, Functor, Foldable, Traversable)