hercules-ci-api-agent 0.4.2.0 → 0.4.3.0
raw patch · 5 files changed
+44/−10 lines, 5 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Hercules.API.Agent.Evaluate.EvaluateTask: MkOnPush :: Text -> Map Text ImmutableInput -> OnPush
- Hercules.API.Agent.Evaluate.EvaluateTask: [autoArguments] :: EvaluateTask -> Map Text (SubPathOf Identifier)
- Hercules.API.Agent.Evaluate.EvaluateTask: [ciSystems] :: EvaluateTask -> Maybe (Map Text ())
- Hercules.API.Agent.Evaluate.EvaluateTask: [extraGitCredentials] :: EvaluateTask -> Maybe [Credential]
- Hercules.API.Agent.Evaluate.EvaluateTask: [id] :: EvaluateTask -> Id (Task EvaluateTask)
- Hercules.API.Agent.Evaluate.EvaluateTask: [inputMetadata] :: EvaluateTask -> Map Identifier (Map Text Value)
- Hercules.API.Agent.Evaluate.EvaluateTask: [inputs] :: OnPush -> Map Text ImmutableInput
- Hercules.API.Agent.Evaluate.EvaluateTask: [logToken] :: EvaluateTask -> Text
- Hercules.API.Agent.Evaluate.EvaluateTask: [name] :: OnPush -> Text
- Hercules.API.Agent.Evaluate.EvaluateTask: [nixPath] :: EvaluateTask -> [NixPathElement (SubPathOf Identifier)]
- Hercules.API.Agent.Evaluate.EvaluateTask: [otherInputs] :: EvaluateTask -> Map Identifier Text
- Hercules.API.Agent.Evaluate.EvaluateTask: [password] :: Credential -> Text
- Hercules.API.Agent.Evaluate.EvaluateTask: [path] :: SubPathOf a -> a
- Hercules.API.Agent.Evaluate.EvaluateTask: [prefix] :: NixPathElement a -> Maybe Text
- Hercules.API.Agent.Evaluate.EvaluateTask: [primaryInput] :: EvaluateTask -> Text
- Hercules.API.Agent.Evaluate.EvaluateTask: [selector] :: EvaluateTask -> Selector
- Hercules.API.Agent.Evaluate.EvaluateTask: [subPath] :: SubPathOf a -> Maybe Text
- Hercules.API.Agent.Evaluate.EvaluateTask: [url] :: Credential -> Text
- Hercules.API.Agent.Evaluate.EvaluateTask: [username] :: Credential -> Text
- Hercules.API.Agent.Evaluate.EvaluateTask: [value] :: NixPathElement a -> a
- Hercules.API.Agent.Evaluate.EvaluateTask: data OnPush
- Hercules.API.Agent.Evaluate.EvaluateTask: instance Control.DeepSeq.NFData Hercules.API.Agent.Evaluate.EvaluateTask.OnPush
- Hercules.API.Agent.Evaluate.EvaluateTask: instance Data.Aeson.Types.FromJSON.FromJSON Hercules.API.Agent.Evaluate.EvaluateTask.OnPush
- Hercules.API.Agent.Evaluate.EvaluateTask: instance Data.Aeson.Types.ToJSON.ToJSON Hercules.API.Agent.Evaluate.EvaluateTask.OnPush
- Hercules.API.Agent.Evaluate.EvaluateTask: instance GHC.Classes.Eq Hercules.API.Agent.Evaluate.EvaluateTask.OnPush
- Hercules.API.Agent.Evaluate.EvaluateTask: instance GHC.Generics.Generic Hercules.API.Agent.Evaluate.EvaluateTask.OnPush
- Hercules.API.Agent.Evaluate.EvaluateTask: instance GHC.Show.Show Hercules.API.Agent.Evaluate.EvaluateTask.OnPush
+ Hercules.API.Agent.Evaluate.EvaluateEvent.OnPushHandlerEvent: [isFlake] :: OnPushHandlerEvent -> Bool
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:autoArguments:EvaluateTask] :: EvaluateTask -> Map Text (SubPathOf Identifier)
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:ciSystems:EvaluateTask] :: EvaluateTask -> Maybe (Map Text ())
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:extraGitCredentials:EvaluateTask] :: EvaluateTask -> Maybe [Credential]
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:id:EvaluateTask] :: EvaluateTask -> Id (Task EvaluateTask)
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:inputMetadata:EvaluateTask] :: EvaluateTask -> Map Identifier (Map Text Value)
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:inputs:EvaluateTask] :: EvaluateTask -> Map Identifier ImmutableInput
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:isFlakeJob:EvaluateTask] :: EvaluateTask -> Bool
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:logToken:EvaluateTask] :: EvaluateTask -> Text
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:nixPath:EvaluateTask] :: EvaluateTask -> [NixPathElement (SubPathOf Identifier)]
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:otherInputs:EvaluateTask] :: EvaluateTask -> Map Identifier Text
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:password:Credential] :: Credential -> Text
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:path:SubPathOf] :: SubPathOf a -> a
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:prefix:NixPathElement] :: NixPathElement a -> Maybe Text
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:primaryInput:EvaluateTask] :: EvaluateTask -> Text
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:selector:EvaluateTask] :: EvaluateTask -> Selector
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:subPath:SubPathOf] :: SubPathOf a -> Maybe Text
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:url:Credential] :: Credential -> Text
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:username:Credential] :: Credential -> Text
+ Hercules.API.Agent.Evaluate.EvaluateTask: [$sel:value:NixPathElement] :: NixPathElement a -> a
+ Hercules.API.Agent.Evaluate.EvaluateTask.OnPush: MkOnPush :: Text -> Map Text ImmutableInput -> OnPush
+ Hercules.API.Agent.Evaluate.EvaluateTask.OnPush: [inputs] :: OnPush -> Map Text ImmutableInput
+ Hercules.API.Agent.Evaluate.EvaluateTask.OnPush: [name] :: OnPush -> Text
+ Hercules.API.Agent.Evaluate.EvaluateTask.OnPush: data OnPush
+ Hercules.API.Agent.Evaluate.EvaluateTask.OnPush: instance Control.DeepSeq.NFData Hercules.API.Agent.Evaluate.EvaluateTask.OnPush.OnPush
+ Hercules.API.Agent.Evaluate.EvaluateTask.OnPush: instance Data.Aeson.Types.FromJSON.FromJSON Hercules.API.Agent.Evaluate.EvaluateTask.OnPush.OnPush
+ Hercules.API.Agent.Evaluate.EvaluateTask.OnPush: instance Data.Aeson.Types.ToJSON.ToJSON Hercules.API.Agent.Evaluate.EvaluateTask.OnPush.OnPush
+ Hercules.API.Agent.Evaluate.EvaluateTask.OnPush: instance GHC.Classes.Eq Hercules.API.Agent.Evaluate.EvaluateTask.OnPush.OnPush
+ Hercules.API.Agent.Evaluate.EvaluateTask.OnPush: instance GHC.Generics.Generic Hercules.API.Agent.Evaluate.EvaluateTask.OnPush.OnPush
+ Hercules.API.Agent.Evaluate.EvaluateTask.OnPush: instance GHC.Show.Show Hercules.API.Agent.Evaluate.EvaluateTask.OnPush.OnPush
- Hercules.API.Agent.Evaluate.EvaluateEvent.OnPushHandlerEvent: OnPushHandlerEvent :: Text -> Map Text InputDeclaration -> OnPushHandlerEvent
+ Hercules.API.Agent.Evaluate.EvaluateEvent.OnPushHandlerEvent: OnPushHandlerEvent :: Text -> Map Text InputDeclaration -> Bool -> OnPushHandlerEvent
- Hercules.API.Agent.Evaluate.EvaluateTask: EvaluateTask :: Id (Task EvaluateTask) -> Text -> Map Identifier Text -> Map Identifier (Map Text Value) -> Map Text (SubPathOf Identifier) -> [NixPathElement (SubPathOf Identifier)] -> Text -> Selector -> Maybe (Map Text ()) -> Maybe [Credential] -> EvaluateTask
+ Hercules.API.Agent.Evaluate.EvaluateTask: EvaluateTask :: Id (Task EvaluateTask) -> Text -> Map Identifier Text -> Map Identifier (Map Text Value) -> Map Identifier ImmutableInput -> Map Text (SubPathOf Identifier) -> [NixPathElement (SubPathOf Identifier)] -> Text -> Selector -> Maybe (Map Text ()) -> Maybe [Credential] -> Bool -> EvaluateTask
Files
- CHANGELOG.md +7/−0
- hercules-ci-api-agent.cabal +2/−1
- src/Hercules/API/Agent/Evaluate/EvaluateEvent/OnPushHandlerEvent.hs +13/−2
- src/Hercules/API/Agent/Evaluate/EvaluateTask.hs +9/−7
- src/Hercules/API/Agent/Evaluate/EvaluateTask/OnPush.hs +13/−0
CHANGELOG.md view
@@ -5,6 +5,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## 0.4.3.0 - 2022-03-18++### Added++ - `isFlake` and `isFlakeJob` fields for to support an optimized checkout flow+ supporting access of flake metadata fields like `sourceInfo`.+ ## 0.4.2.0 - 2022-03-15 ### Added
hercules-ci-api-agent.cabal view
@@ -1,7 +1,7 @@ cabal-version: 1.12 name: hercules-ci-api-agent-version: 0.4.2.0+version: 0.4.3.0 synopsis: API definition for Hercules CI Agent to talk to hercules-ci.com or Hercules CI Enterprise category: API, CI, Testing, DevOps, Nix homepage: https://github.com/hercules-ci/hercules-ci-agent#readme@@ -40,6 +40,7 @@ Hercules.API.Agent.Evaluate.EvaluateEvent.OnPushHandlerEvent Hercules.API.Agent.Evaluate.EvaluateEvent.PushedAll Hercules.API.Agent.Evaluate.EvaluateTask+ Hercules.API.Agent.Evaluate.EvaluateTask.OnPush Hercules.API.Agent.Evaluate.ImmutableInput Hercules.API.Agent.Evaluate.ImmutableGitInput Hercules.API.Agent.LifeCycle
src/Hercules/API/Agent/Evaluate/EvaluateEvent/OnPushHandlerEvent.hs view
@@ -3,11 +3,22 @@ module Hercules.API.Agent.Evaluate.EvaluateEvent.OnPushHandlerEvent where +import Control.Applicative ((<|>))+import Control.Lens (at, (%~))+import qualified Data.Aeson as A+import Data.Aeson.Lens (_Object) import Hercules.API.Agent.Evaluate.EvaluateEvent.InputDeclaration (InputDeclaration) import Hercules.API.Prelude data OnPushHandlerEvent = OnPushHandlerEvent { handlerName :: Text,- handlerExtraInputs :: Map Text InputDeclaration+ handlerExtraInputs :: Map Text InputDeclaration,+ isFlake :: Bool }- deriving (Generic, Show, Eq, NFData, FromJSON, ToJSON)+ deriving (Generic, Show, Eq, NFData, ToJSON)++instance FromJSON OnPushHandlerEvent where+ parseJSON = A.genericParseJSON A.defaultOptions . fixup+ where+ fixup :: A.Value -> A.Value+ fixup = _Object . at "isFlake" %~ (<|> Just (A.Bool False))
src/Hercules/API/Agent/Evaluate/EvaluateTask.hs view
@@ -1,8 +1,10 @@ {-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DuplicateRecordFields #-} module Hercules.API.Agent.Evaluate.EvaluateTask where import Data.Aeson (Value)+import Hercules.API.Agent.Evaluate.EvaluateTask.OnPush (OnPush) import Hercules.API.Agent.Evaluate.ImmutableInput (ImmutableInput) import Hercules.API.Prelude import Hercules.API.Task (Task)@@ -12,12 +14,18 @@ primaryInput :: Text, -- Obsolete since >= 0.8 otherInputs :: Map Identifier Text, -- identifier -> HTTP URL inputMetadata :: Map Identifier (Map Text Value),+ inputs :: Map Identifier ImmutableInput, 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]+ extraGitCredentials :: Maybe [Credential],+ -- | Whether to use Nix's fetching mechanism for everything.+ --+ -- Putting checkouts in the store isn't always desirable, so we keep the+ -- non-flake behavior of custom checkouts for non-flake use cases.+ isFlakeJob :: Bool } deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON) @@ -31,12 +39,6 @@ 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
+ src/Hercules/API/Agent/Evaluate/EvaluateTask/OnPush.hs view
@@ -0,0 +1,13 @@+{-# LANGUAGE DeriveAnyClass #-}++module Hercules.API.Agent.Evaluate.EvaluateTask.OnPush where++import Hercules.API.Agent.Evaluate.ImmutableInput (ImmutableInput)+import Hercules.API.Prelude++data OnPush = MkOnPush+ { name :: Text,+ -- | extraInputs+ inputs :: Map Text ImmutableInput+ }+ deriving (Generic, Show, Eq, NFData, ToJSON, FromJSON)