hercules-ci-cli 0.2.0 → 0.2.1
raw patch · 4 files changed
+22/−10 lines, 4 files
Files
- CHANGELOG.md +6/−0
- hercules-ci-cli.cabal +1/−1
- src/Hercules/CLI/Effect.hs +9/−7
- src/Hercules/CLI/State.hs +6/−2
CHANGELOG.md view
@@ -5,6 +5,12 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## 0.2.1 - 2021-06-22++### Added++ - Compatibility with updated dependencies+ ## 0.2.0 - 2021-04-21 ### Added
hercules-ci-cli.cabal view
@@ -1,7 +1,7 @@ cabal-version: 1.12 name: hercules-ci-cli-version: 0.2.0+version: 0.2.1 synopsis: The hci command for working with Hercules CI homepage: https://docs.hercules-ci.com bug-reports: https://github.com/hercules-ci/hercules-ci-agent/issues
src/Hercules/CLI/Effect.hs view
@@ -5,7 +5,6 @@ import Data.Has (Has) import qualified Data.Text as T-import Foreign (ForeignPtr) import qualified Hercules.API.Projects as Projects import qualified Hercules.API.Projects.CreateUserEffectTokenResponse as CreateUserEffectTokenResponse import Hercules.Agent.Sensitive (Sensitive (Sensitive))@@ -19,9 +18,9 @@ import Hercules.CLI.Secret (getSecretsFilePath) import Hercules.CNix (Store) import Hercules.CNix.Expr (Match (IsAttrs), Value (rtValue), getAttrBool, getDrvFile, match)-import Hercules.CNix.Store (buildPaths, getDerivationInputs)+import qualified Hercules.CNix.Std.Vector as Std.Vector+import Hercules.CNix.Store (Derivation, StorePath, buildPaths, getDerivationInputs, newStorePathWithOutputs) import qualified Hercules.CNix.Store as CNix-import Hercules.CNix.Store.Context (Derivation) import Hercules.Effect (runEffect) import Hercules.Error (escalate) import Katip (initLogEnv, runKatipContextT)@@ -78,12 +77,15 @@ runKatipContextT logEnv () mempty $ runEffect derivation (Sensitive token) secretsJson apiBaseURL workDir throwIO exitCode -prepareDerivation :: MonadIO m => Store -> ByteString -> m (ForeignPtr Derivation)+prepareDerivation :: MonadIO m => Store -> StorePath -> m Derivation prepareDerivation store drvPath = do derivation <- liftIO $ CNix.getDerivation store drvPath- inputs <- liftIO $ getDerivationInputs derivation- let paths = [input <> "!" <> output | (input, outputs) <- inputs, output <- outputs]- liftIO $ buildPaths store paths+ inputs <- liftIO $ getDerivationInputs store derivation+ storePathsWithOutputs <- liftIO Std.Vector.new+ liftIO $ for_ inputs \(input, outputs) -> do+ swo <- newStorePathWithOutputs input outputs+ Std.Vector.pushBackFP storePathsWithOutputs swo+ liftIO $ buildPaths store storePathsWithOutputs pure derivation ciAttributeArgument :: Optparse.Parser Text
src/Hercules/CLI/State.hs view
@@ -4,6 +4,7 @@ module Hercules.CLI.State where import Conduit (ConduitT, mapC, runConduitRes, sinkFile, sourceHandle, stdinC, stdoutC, (.|))+import Hercules.API (enterApiE) import qualified Hercules.API.Projects.Project as Project import Hercules.API.State import Hercules.CLI.Client@@ -36,7 +37,9 @@ pure do runAuthenticated do projectId <- Project.id <$> findProject project- runHerculesClientStream (getProjectStateData stateClient projectId name) \case+ let projectStateClient = stateClient `enterApiE` \api -> byProjectId api projectId+ -- TODO: version+ runHerculesClientStream (getStateData projectStateClient name Nothing) \case Left e -> dieWithHttpError e Right (Headers r _) -> do runConduitRes $@@ -58,7 +61,8 @@ liftIO $ withBinaryFile file ReadMode \h -> runRIO r $ f (sourceHandle h .| mapC RawBytes) withStream \stream -> do- _noContent <- runHerculesClient (putProjectStateData stateClient projectId name (toSourceIO stream))+ let projectStateClient = stateClient `enterApiE` \api -> byProjectId api projectId+ _noContent <- runHerculesClient (putStateData projectStateClient name (toSourceIO stream)) pass putErrText $ "hci: State file upload successful for " <> name