diff options
| -rw-r--r-- | src/Config.hs | 2 | ||||
| -rw-r--r-- | src/Eval.hs | 6 | ||||
| -rw-r--r-- | src/Job.hs | 2 | ||||
| -rw-r--r-- | src/Job/Types.hs | 7 | 
4 files changed, 9 insertions, 8 deletions
| diff --git a/src/Config.hs b/src/Config.hs index bc66ea9..98b5aa5 100644 --- a/src/Config.hs +++ b/src/Config.hs @@ -101,7 +101,7 @@ parseSingleCheckout = withMap "checkout definition" $ \m -> do          Nothing -> return [ Left checkout ]          Just name -> do              revision <- m .:? "revision" -            return [ Right ( DeclaredJobRepo (RepoName name), revision, checkout ) ] +            return [ Right ( RepoName name, revision, checkout ) ]  parseMultipleCheckouts :: Node Pos -> Parser [ Either JobCheckout ( JobRepo Declared, Maybe Text, JobCheckout ) ]  parseMultipleCheckouts = withSeq "checkout definitions" $ fmap concat . mapM parseSingleCheckout diff --git a/src/Eval.hs b/src/Eval.hs index 7e53128..807a3b8 100644 --- a/src/Eval.hs +++ b/src/Eval.hs @@ -44,10 +44,10 @@ runEval action einput = runExceptT $ flip runReaderT einput action  evalJob :: EvalInput -> DeclaredJob -> Except EvalError Job  evalJob EvalInput {..} decl = do -    otherCheckout <- forM (jobOtherCheckout decl) $ \( DeclaredJobRepo name, revision, checkout ) -> do +    otherCheckout <- forM (jobOtherCheckout decl) $ \( name, revision, checkout ) -> do          repo <- maybe (throwError $ OtherEvalError $ "repo `" <> textRepoName name <> "' not defined") return $              lookup name eiOtherRepos -        return ( EvaluatedJobRepo repo, revision, checkout ) +        return ( repo, revision, checkout )      return Job          { jobName = jobName decl          , jobContainingCheckout = jobContainingCheckout decl @@ -80,7 +80,7 @@ canonicalJobName (r : rs) mbTree config = do                  [ case mbTree of                      Just _ -> return []                      Nothing -> maybeToList <$> asks eiContainingRepo -                , return $ nub $ map (\( EvaluatedJobRepo repo, _, _ ) -> repo) $ jobOtherCheckout job +                , return $ nub $ map (\( repo, _, _ ) -> repo) $ jobOtherCheckout job                  ]              (JobIdName name :) <$> canonicalOtherCheckouts rs repos          Nothing -> throwError $ OtherEvalError $ "job ‘" <> r <> "’ not found" @@ -297,7 +297,7 @@ prepareJob dir mbCommit job inner = do                      fail $ "no containing repository, can't do checkout"                  return $ stringJobName (jobName job) -        jdirOther <- forM (jobOtherCheckout job) $ \( EvaluatedJobRepo repo, revision, JobCheckout mbsub dest ) -> do +        jdirOther <- forM (jobOtherCheckout job) $ \( repo, revision, JobCheckout mbsub dest ) -> do              commit <- readCommit repo $ fromMaybe "HEAD" revision              tree <- getCommitTree commit              subtree <- maybe return (getSubtree (Just commit)) mbsub $ tree diff --git a/src/Job/Types.hs b/src/Job/Types.hs index 0447615..5415e4d 100644 --- a/src/Job/Types.hs +++ b/src/Job/Types.hs @@ -1,5 +1,6 @@  module Job.Types where +import Data.Kind  import Data.Text (Text)  import Data.Text qualified as T @@ -34,9 +35,9 @@ textJobName :: JobName -> Text  textJobName (JobName name) = name -data JobRepo d where -    DeclaredJobRepo :: RepoName -> JobRepo Declared -    EvaluatedJobRepo :: Repo -> JobRepo Evaluated +type family JobRepo d :: Type where +    JobRepo Declared = RepoName +    JobRepo Evaluated = Repo  data JobCheckout = JobCheckout      { jcSubtree :: Maybe FilePath |