diff --git a/shell/ShellRC.hs b/shell/ShellRC.hs index a8658a525facb331cfb0803702b69c74ac01022e..c055df2c0387b4dcf704303e3ac00a41a2d7773b 100644 --- a/shell/ShellRC.hs +++ b/shell/ShellRC.hs @@ -293,12 +293,22 @@ haskellPackageToExpr (MkHaskellPackage s xs ys) = packageListToExpr :: PackageList -> Expr s a packageListToExpr (MkPackageList (Map.toList -> ys)) = RecordLit . DMap.fromList . map (\(MkName x, y) -> (x, makeRecordField $ haskellPackageToExpr y)) $ ys -h :: HorizonExport -> Expr Src Import -h (MakePackageSet (MkPackageSetExportSettings (MkPackagesDir d) (MkPackageSetFile f) (MkPackageSet (MkCompiler c) xs))) = letHorizonSpecIn $ letPackagesBindingIn xs $ RecordLit . DMap.fromList $ [ +horizonExportToExpr :: HorizonExport -> Expr s Import +horizonExportToExpr (MakePackageSet x) = packageSetExportSettingsToExpr x + +packageSetExportSettingsToExpr :: PackageSetExportSettings -> Expr s Import +packageSetExportSettingsToExpr (MkPackageSetExportSettings (MkPackagesDir d) (MkPackageSetFile f) (MkPackageSet (MkCompiler c) xs)) = letHorizonSpecIn $ letPackagesBindingIn xs $ RecordLit . DMap.fromList $ [ ("packageSetFile", makeRecordField $ TextLit $ Chunks [] (T.pack $ toFilePath f)), ("packagesDir", makeRecordField $ TextLit $ Chunks [] $ T.pack $ toFilePath d), ("packagesSet", makeRecordField $ RecordLit $ DMap.fromList [("compiler", makeRecordField $ TextLit $ Chunks [] c), ("packages", makeRecordField $ ToMap "packages" Nothing)])] + +prettyHorizonExport :: HorizonExport -> Text +prettyHorizonExport = Dhall.Core.pretty . horizonExportToExpr + +writeHorizonFile :: HorizonExport -> IO () +writeHorizonFile = B.writeFile "horizon.dhall" . T.encodeUtf8 . Dhall.Core.pretty . horizonExportToExpr + loadHorizon :: IO HorizonExport loadHorizon = Dhall.inputFile @HorizonExport Dhall.auto "horizon.dhall"