horizon-spec 0.3.0 → 0.4.0
raw patch · 5 files changed
+103/−21 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Horizon.Spec: [fromName] :: Name -> Text
- Horizon.Spec: [fromRepo] :: Repo -> Url
- Horizon.Spec: [fromSubdir] :: Subdir -> Path Rel Dir
- Horizon.Spec: [fromUrl] :: Url -> Text
- Horizon.Spec: [fromVersion] :: Version -> Text
+ Horizon.Spec: [$sel:fromName:MkName] :: Name -> Text
+ Horizon.Spec: [$sel:fromRepo:MkRepo] :: Repo -> Url
+ Horizon.Spec: [$sel:fromSubdir:MkSubdir] :: Subdir -> Path Rel Dir
+ Horizon.Spec: [$sel:fromUrl:MkUrl] :: Url -> Text
+ Horizon.Spec: [$sel:fromVersion:MkVersion] :: Version -> Text
+ Horizon.Spec: [MakeOverlay] :: OverlayExportSettings -> HorizonExport
+ Horizon.Spec: [MakePackageSet] :: PackageSetExportSettings -> HorizonExport
+ Horizon.Spec: [MkOverlayExportSettings] :: PackagesDir -> OverlayFile -> Overlay -> OverlayExportSettings
+ Horizon.Spec: [MkOverlayFile] :: Path Rel File -> OverlayFile
+ Horizon.Spec: [MkPackageSetExportSettings] :: PackagesDir -> PackageSetFile -> PackageSet -> PackageSetExportSettings
+ Horizon.Spec: [MkPackageSetFile] :: Path Rel File -> PackageSetFile
+ Horizon.Spec: data HorizonExport
+ Horizon.Spec: data OverlayExportSettings
+ Horizon.Spec: data PackageSetExportSettings
+ Horizon.Spec: instance Dhall.Marshal.Decode.FromDhall Horizon.Spec.HorizonExport
+ Horizon.Spec: instance Dhall.Marshal.Decode.FromDhall Horizon.Spec.OverlayExportSettings
+ Horizon.Spec: instance Dhall.Marshal.Decode.FromDhall Horizon.Spec.OverlayFile
+ Horizon.Spec: instance Dhall.Marshal.Decode.FromDhall Horizon.Spec.PackageSetExportSettings
+ Horizon.Spec: instance Dhall.Marshal.Decode.FromDhall Horizon.Spec.PackageSetFile
+ Horizon.Spec: instance Dhall.Marshal.Decode.FromDhall Horizon.Spec.PackagesDir
+ Horizon.Spec: instance Dhall.Marshal.Encode.ToDhall Horizon.Spec.HorizonExport
+ Horizon.Spec: instance Dhall.Marshal.Encode.ToDhall Horizon.Spec.OverlayExportSettings
+ Horizon.Spec: instance Dhall.Marshal.Encode.ToDhall Horizon.Spec.OverlayFile
+ Horizon.Spec: instance Dhall.Marshal.Encode.ToDhall Horizon.Spec.PackageSetExportSettings
+ Horizon.Spec: instance Dhall.Marshal.Encode.ToDhall Horizon.Spec.PackageSetFile
+ Horizon.Spec: instance Dhall.Marshal.Encode.ToDhall Horizon.Spec.PackagesDir
+ Horizon.Spec: instance GHC.Classes.Eq Horizon.Spec.HorizonExport
+ Horizon.Spec: instance GHC.Classes.Eq Horizon.Spec.OverlayExportSettings
+ Horizon.Spec: instance GHC.Classes.Eq Horizon.Spec.OverlayFile
+ Horizon.Spec: instance GHC.Classes.Eq Horizon.Spec.PackageSetExportSettings
+ Horizon.Spec: instance GHC.Classes.Eq Horizon.Spec.PackageSetFile
+ Horizon.Spec: instance GHC.Classes.Eq Horizon.Spec.PackagesDir
+ Horizon.Spec: instance GHC.Generics.Generic Horizon.Spec.HorizonExport
+ Horizon.Spec: instance GHC.Generics.Generic Horizon.Spec.OverlayExportSettings
+ Horizon.Spec: instance GHC.Generics.Generic Horizon.Spec.OverlayFile
+ Horizon.Spec: instance GHC.Generics.Generic Horizon.Spec.PackageSetExportSettings
+ Horizon.Spec: instance GHC.Generics.Generic Horizon.Spec.PackageSetFile
+ Horizon.Spec: instance GHC.Generics.Generic Horizon.Spec.PackagesDir
+ Horizon.Spec: instance GHC.Show.Show Horizon.Spec.HorizonExport
+ Horizon.Spec: instance GHC.Show.Show Horizon.Spec.OverlayExportSettings
+ Horizon.Spec: instance GHC.Show.Show Horizon.Spec.OverlayFile
+ Horizon.Spec: instance GHC.Show.Show Horizon.Spec.PackageSetExportSettings
+ Horizon.Spec: instance GHC.Show.Show Horizon.Spec.PackageSetFile
+ Horizon.Spec: instance GHC.Show.Show Horizon.Spec.PackagesDir
+ Horizon.Spec: newtype OverlayFile
+ Horizon.Spec: newtype PackageSetFile
Files
- ChangeLog.md +9/−0
- dhall/package.dhall +28/−4
- horizon-spec.cabal +1/−1
- src/Horizon/Spec.hs +62/−15
- test/Spec.hs +3/−1
ChangeLog.md view
@@ -1,5 +1,14 @@ # Changelog for horizon-spec +## v0.4.0++* Add `HorizonExport` type for declaratively expressing+ export settings for horizon commands.+* Add `PackageSetExportSettings` for expressing package set+ export settings.+* Add `OverlayExportSettings` for expressing overlay+ export settings.+ ## v0.3.0 * Add `LocalSource` and `TarballSource` types
dhall/package.dhall view
@@ -3,6 +3,10 @@ ? https://raw.githubusercontent.com/dhall-lang/dhall-lang/v21.1.0/Prelude/package.dhall sha256:0fed19a88330e9a8a3fbe1e8442aa11d12e38da51eb12ba8bcb56f3c25d0854a +let FilePath = Text++let Directory = Text+ let Name = Text let Version = Text@@ -53,8 +57,22 @@ let Overlay = PackageList +let PackageSetExportSettings =+ { packagesDir : Directory+ , packageSetFile : FilePath+ , packageSet : PackageSet+ }++let OverlayExportSettings =+ { packagesDir : Directory, overlayFile : FilePath, overlay : Overlay }++let HorizonExport =+ < MakePackageSet : PackageSetExportSettings+ | MakeOverlay : OverlayExportSettings+ >+ let callHackage- : Name → Version → Attr HaskellPackage.Type+ : Name → Version → PackageEntry = λ(name : Name) → λ(version : Version) → { mapKey = name@@ -64,7 +82,7 @@ } let callGit- : Name → Url → Revision → Optional Subdir → Attr HaskellPackage.Type+ : Name → Url → Revision → Optional Subdir → PackageEntry = λ(name : Name) → λ(url : Url) → λ(revision : Revision) →@@ -76,7 +94,7 @@ } let callLocal- : Name → Subdir → Attr HaskellPackage.Type+ : Name → Subdir → PackageEntry = λ(name : Name) → λ(subdir : Subdir) → { mapKey = name@@ -84,7 +102,7 @@ } let callTarball- : Name → Url → Attr HaskellPackage.Type+ : Name → Url → PackageEntry = λ(name : Name) → λ(url : Url) → { mapKey = name@@ -111,13 +129,19 @@ in { Attr , CabalFlag , Compiler+ , Directory+ , FilePath , Flag , HaskellSource , HaskellPackage+ , HorizonExport , Modifiers , Name+ , OverlayExportSettings , Overlay+ , PackageEntry , PackageList+ , PackageSetExportSettings , PackageSet , Revision , Subdir
horizon-spec.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: horizon-spec-version: 0.3.0+version: 0.4.0 synopsis: Horizon Stable Package Set Type Definitions description: This package contains the type definitions for the Horizon stable package set (https://horizon-haskell.net). This is a schema used to define package sets sourcing from hackage and git.
src/Horizon/Spec.hs view
@@ -1,24 +1,30 @@-{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DuplicateRecordFields #-} module Horizon.Spec- ( Url(MkUrl, fromUrl)- , Repo(MkRepo, fromRepo)- , Subdir(MkSubdir, fromSubdir)- , Name(MkName, fromName)- , Version (MkVersion, fromVersion)+ ( CabalFlag(MkCabalFlag)+ , Compiler(MkCompiler, fromCompiler)+ , Flag(Enable, Disable) , GitSource(MkGitSource, url, revision, subdir) , HackageSource(MkHackageSource, name, version)- , LocalSource(MkLocalSource, fromLocalSource)- , TarballSource(MkTarballSource, fromTarballSource)+ , HaskellPackage(MkHaskellPackage, source, modifiers, flags) , HaskellSource(FromGit, FromHackage, FromTarball, FromLocal)- , Flag(Enable, Disable)- , CabalFlag(MkCabalFlag)+ , HorizonExport(MakePackageSet, MakeOverlay)+ , LocalSource(MkLocalSource, fromLocalSource) , Modifiers(doJailbreak, doCheck, enableProfiling)- , HaskellPackage(MkHaskellPackage, source, modifiers, flags)- , Revision(MkRevision, fromRevision)- , Compiler(MkCompiler, fromCompiler)- , PackageList(MkPackageList, fromPackageList)+ , Name(MkName, fromName)+ , OverlayExportSettings(MkOverlayExportSettings, packagesDir, overlayFile, overlay)+ , OverlayFile(MkOverlayFile, fromOverlayFile) , Overlay(MkOverlay, fromOverlay)+ , PackageList(MkPackageList, fromPackageList)+ , PackageSetExportSettings(MkPackageSetExportSettings, packagesDir, packageSetFile, packageSet)+ , PackageSetFile(MkPackageSetFile, fromPackageSetFile) , PackageSet(MkPackageSet, compiler, packages)+ , Repo(MkRepo, fromRepo)+ , Revision(MkRevision, fromRevision)+ , Subdir(MkSubdir, fromSubdir)+ , TarballSource(MkTarballSource, fromTarballSource)+ , Url(MkUrl, fromUrl)+ , Version (MkVersion, fromVersion) ) where @@ -26,7 +32,7 @@ import Data.Map (Map) import Data.Text (Text) import Dhall (FromDhall, Generic, ToDhall)-import Path (Dir, Path, Rel)+import Path (Dir, File, Path, Rel) import Path.Dhall () @@ -145,5 +151,46 @@ data PackageSet where MkPackageSet :: { compiler :: Compiler , packages :: PackageList } -> PackageSet+ deriving stock (Show, Eq, Generic)+ deriving anyclass (FromDhall, ToDhall)++type PackagesDir :: Type+newtype PackagesDir where+ MkPackagesDir :: { fromPackagesDir :: Path Rel Dir } -> PackagesDir+ deriving stock (Show, Eq, Generic)+ deriving newtype (FromDhall, ToDhall)++type PackageSetFile :: Type+newtype PackageSetFile where+ MkPackageSetFile :: { fromPackageSetFile :: Path Rel File } -> PackageSetFile+ deriving stock (Show, Eq, Generic)+ deriving newtype (FromDhall, ToDhall)++type OverlayFile :: Type+newtype OverlayFile where+ MkOverlayFile :: { fromOverlayFile :: Path Rel File } -> OverlayFile+ deriving stock (Show, Eq, Generic)+ deriving newtype (FromDhall, ToDhall)++type PackageSetExportSettings :: Type+data PackageSetExportSettings where+ MkPackageSetExportSettings :: { packagesDir :: PackagesDir+ , packageSetFile :: PackageSetFile+ , packageSet :: PackageSet } -> PackageSetExportSettings+ deriving stock (Show, Eq, Generic)+ deriving anyclass (FromDhall, ToDhall)++type OverlayExportSettings :: Type+data OverlayExportSettings where+ MkOverlayExportSettings :: { packagesDir :: PackagesDir+ , overlayFile :: OverlayFile+ , overlay :: Overlay } -> OverlayExportSettings+ deriving stock (Show, Eq, Generic)+ deriving anyclass (FromDhall, ToDhall)++type HorizonExport :: Type+data HorizonExport where+ MakePackageSet :: PackageSetExportSettings -> HorizonExport+ MakeOverlay :: OverlayExportSettings -> HorizonExport deriving stock (Show, Eq, Generic) deriving anyclass (FromDhall, ToDhall)
test/Spec.hs view
@@ -8,7 +8,7 @@ import Dhall (FromDhall, ToDhall, auto, embed, inject, inputFile) import Dhall.Pretty (layout, prettyExpr)-import Horizon.Spec (Overlay, PackageSet)+import Horizon.Spec (HorizonExport, Overlay, PackageSet) import Prettyprinter.Render.Text (renderStrict) import Test.Syd (Spec, describe, doNotRandomiseExecutionOrder, it,@@ -35,3 +35,5 @@ expectedOutputTest (Proxy @PackageSet) "modified-package-set" expectedOutputTest (Proxy @Overlay) "sample-overlay" expectedOutputTest (Proxy @Overlay) "modified-overlay"+ expectedOutputTest (Proxy @HorizonExport) "sample-package-set-export"+ expectedOutputTest (Proxy @HorizonExport) "sample-overlay-export"