diff --git a/app/App.hs b/app/App.hs index 0f44d1a2b4..bc3b34226c 100644 --- a/app/App.hs +++ b/app/App.hs @@ -30,7 +30,6 @@ data App m a where GetMainFile :: Maybe (AppPath File) -> App m (Path Abs File) FromAppPathDir :: AppPath Dir -> App m (Path Abs Dir) RenderStdOut :: (HasAnsiBackend a, HasTextBackend a) => a -> App m () - RunCorePipelineEither :: AppPath File -> App m (Either JuvixError Artifacts) Say :: Text -> App m () SayRaw :: ByteString -> App m () @@ -76,9 +75,6 @@ reAppIO args@RunAppIOArgs {..} = AskInvokeDir -> return invDir AskPkgDir -> return (_runAppIOArgsRoot ^. rootRootDir) AskBuildDir -> return (resolveAbsBuildDir (_runAppIOArgsRoot ^. rootRootDir) (_runAppIOArgsRoot ^. rootBuildDir)) - RunCorePipelineEither input -> do - entry <- getEntryPoint' args input - embed (corePipelineIOEither entry) Say t | g ^. globalOnlyErrors -> return () | otherwise -> embed (putStrLn t) diff --git a/app/Commands/Repl.hs b/app/Commands/Repl.hs index 165430e3cc..f60074145b 100644 --- a/app/Commands/Repl.hs +++ b/app/Commands/Repl.hs @@ -29,17 +29,9 @@ import Juvix.Compiler.Core.Transformation qualified as Core import Juvix.Compiler.Core.Transformation.DisambiguateNames (disambiguateNames) import Juvix.Compiler.Internal.Language qualified as Internal import Juvix.Compiler.Internal.Pretty qualified as Internal -import Juvix.Compiler.Pipeline.Loader.PathResolver (runPathResolver) -import Juvix.Compiler.Pipeline.Loader.PathResolver.DependenciesConfig -import Juvix.Compiler.Pipeline.Loader.PathResolver.Error -import Juvix.Compiler.Pipeline.Package.Loader.Error -import Juvix.Compiler.Pipeline.Package.Loader.EvalEff.IO import Juvix.Compiler.Pipeline.Repl import Juvix.Compiler.Pipeline.Run -import Juvix.Compiler.Pipeline.Setup (entrySetup) import Juvix.Data.CodeAnn (Ann) -import Juvix.Data.Effect.Git -import Juvix.Data.Effect.Process import Juvix.Data.Error.GenericError qualified as Error import Juvix.Data.NameKind import Juvix.Extra.Paths qualified as P @@ -119,7 +111,7 @@ quit _ = liftIO (throwIO Interrupt) loadEntryPoint :: EntryPoint -> Repl () loadEntryPoint ep = do - artif <- liftIO (corePipelineIO' ep) + artif <- liftIO (runReplPipelineIO ep) let newCtx = ReplContext { _replContextArtifacts = artif, @@ -141,29 +133,10 @@ loadFile f = do loadEntryPoint entryPoint loadDefaultPrelude :: Repl () -loadDefaultPrelude = whenJustM defaultPreludeEntryPoint $ \e -> do - root <- Reader.asks (^. replRoot . rootRootDir) - let hasInternet = not (e ^. entryPointOffline) - -- The following is needed to ensure that the default location of the - -- standard library exists - void - . liftIO - . runM - . evalInternet hasInternet - . runFilesIO - . runError @JuvixError - . runReader e - . runTaggedLockPermissive - . runLogIO - . runProcessIO - . runError @GitProcessError - . runGitProcess - . runError @DependencyError - . runError @PackageLoaderError - . runEvalFileEffIO - . runPathResolver root - $ entrySetup defaultDependenciesConfig - loadEntryPoint e +loadDefaultPrelude = + whenJustM + defaultPreludeEntryPoint + loadEntryPoint getReplEntryPoint :: (Root -> a -> GlobalOptions -> IO EntryPoint) -> a -> Repl EntryPoint getReplEntryPoint f inputFile = do diff --git a/src/Juvix/Compiler/Pipeline/Run.hs b/src/Juvix/Compiler/Pipeline/Run.hs index 5a1eaed13f..bd167b10e6 100644 --- a/src/Juvix/Compiler/Pipeline/Run.hs +++ b/src/Juvix/Compiler/Pipeline/Run.hs @@ -98,27 +98,27 @@ runIO opts entry = runIOEither entry >=> mayThrow Left err -> runReader opts $ printErrorAnsiSafe err >> embed exitFailure Right r -> return r -corePipelineIO' :: EntryPoint -> IO Artifacts -corePipelineIO' = corePipelineIO defaultGenericOptions +runReplPipelineIO :: EntryPoint -> IO Artifacts +runReplPipelineIO = runReplPipelineIO' defaultGenericOptions -corePipelineIO :: GenericOptions -> EntryPoint -> IO Artifacts -corePipelineIO opts entry = corePipelineIOEither entry >>= mayThrow +runReplPipelineIO' :: GenericOptions -> EntryPoint -> IO Artifacts +runReplPipelineIO' opts entry = runReplPipelineIOEither entry >>= mayThrow where mayThrow :: Either JuvixError r -> IO r mayThrow = \case Left err -> runM . runReader opts $ printErrorAnsiSafe err >> embed exitFailure Right r -> return r -corePipelineIOEither :: +runReplPipelineIOEither :: EntryPoint -> IO (Either JuvixError Artifacts) -corePipelineIOEither = corePipelineIOEither' LockModePermissive +runReplPipelineIOEither = runReplPipelineIOEither' LockModePermissive -corePipelineIOEither' :: +runReplPipelineIOEither' :: LockMode -> EntryPoint -> IO (Either JuvixError Artifacts) -corePipelineIOEither' lockMode entry = do +runReplPipelineIOEither' lockMode entry = do let hasInternet = not (entry ^. entryPointOffline) runPathResolver' | mainIsPackageFile entry = runPackagePathResolverArtifacts (entry ^. entryPointResolverRoot) @@ -144,7 +144,7 @@ corePipelineIOEither' lockMode entry = do . mapError (JuvixError @PackageLoaderError) . runEvalFileEffIO . runPathResolver' - $ processFileToStoredCore entry + $ entrySetup defaultDependenciesConfig >> processFileToStoredCore entry return $ case eith of Left err -> Left err Right (art, PipelineResult {..}) ->