horizon-gen-nix 0.3.0.1 → 0.3.1.0
raw patch · 6 files changed
+31/−45 lines, 6 files
Files
- ChangeLog.md +4/−0
- horizon-gen-nix.cabal +2/−2
- src/Horizon/Gen/Nix.hs +9/−11
- src/Horizon/Gen/Nix/Options.hs +7/−20
- src/Horizon/Gen/Nix/Writers.hs +7/−8
- test/Spec.hs +2/−4
ChangeLog.md view
@@ -1,5 +1,9 @@ # Changelog for horizon-gen-nix +## v0.3.1++* Remove broken --force flag.+ ## v0.3.0 * Support horizon-spec-0.3.0
horizon-gen-nix.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: horizon-gen-nix-version: 0.3.0.1+version: 0.3.1.0 synopsis: Generate nix expressions from horizon-spec definitions description: Generate nix expressions from horizon-spec definitions category: Package Management, Nix@@ -52,7 +52,7 @@ , directory , distribution-nixpkgs , either- , horizon-spec >=0.3 && <0.4+ , horizon-spec >=0.3 && <0.4 , language-nix , lens , optparse-applicative
src/Horizon/Gen/Nix.hs view
@@ -7,14 +7,12 @@ ) where import Dhall (auto, inputFile)-import Horizon.Gen.Nix.Options (Force,- HorizonCommand (MakePackageSetCommand, OverlayCommand),+import Horizon.Gen.Nix.Options (HorizonCommand (MakePackageSetCommand, OverlayCommand), HorizonOptions (MkHorizonOptions), MakePackageSetOptions, OverlayOptions, fromInputFile, horizonGenNixOptsInfo,- optForce, optHorizonCommand, optInputFile, optOverlayFile,@@ -31,14 +29,14 @@ import Path.Dhall () -makeMakePackageSet :: Force -> MakePackageSetOptions -> PackagesDirectory -> PackageSet -> IO ()-makeMakePackageSet f opts d xs = do- writeHaskellPackages d f (packages xs)+makeMakePackageSet :: MakePackageSetOptions -> PackagesDirectory -> PackageSet -> IO ()+makeMakePackageSet opts d xs = do+ writeHaskellPackages d (packages xs) writeMakePackageSet d (optPackageSetFile opts) xs -makeOverlay :: Force -> OverlayOptions -> PackagesDirectory -> Overlay -> IO ()-makeOverlay f opts d xs = do- writeHaskellPackages d f (fromOverlay xs)+makeOverlay :: OverlayOptions -> PackagesDirectory -> Overlay -> IO ()+makeOverlay opts d xs = do+ writeHaskellPackages d (fromOverlay xs) writeOverlay d (optOverlayFile opts) xs horizonGenNix :: HorizonOptions -> IO ()@@ -47,10 +45,10 @@ in case optHorizonCommand of MakePackageSetCommand opts -> do x <- inputFile @PackageSet auto fp- makeMakePackageSet optForce opts optPackagesDirectory x+ makeMakePackageSet opts optPackagesDirectory x OverlayCommand opts -> do x <- inputFile @Overlay auto fp- makeOverlay optForce opts optPackagesDirectory x+ makeOverlay opts optPackagesDirectory x main :: IO () main = do
src/Horizon/Gen/Nix/Options.hs view
@@ -4,7 +4,6 @@ module Horizon.Gen.Nix.Options ( horizonGenNixOpts , horizonGenNixOptsInfo- , Force(..) , InputFile (..) , HorizonCommand (..) , HorizonOptions (..)@@ -24,11 +23,11 @@ import Horizon.Gen.Nix.Types.PackageSetFile (PackageSetFile (MkPackageSetFile)) import Options.Applicative (Parser, ParserInfo, ReadM, command,- eitherReader, flag',- help, helper, info,- long, metavar, option,- progDesc, short,- subparser, value)+ eitherReader, help,+ helper, info, long,+ metavar, option,+ progDesc, subparser,+ value) import Path (File, Path, Rel, mkRelDir, mkRelFile, parseRelDir,@@ -141,20 +140,9 @@ OverlayCommand :: OverlayOptions -> HorizonCommand deriving stock (Eq, Show) -type Force :: Type-newtype Force = MkForce Bool- deriving stock (Eq, Show)--forceOption :: Parser Force-forceOption = flag' (MkForce True)- ( long "force"- <> short 'f'- <> help "forcibly regenerate the packages")- type HorizonOptions :: Type data HorizonOptions where- MkHorizonOptions :: { optForce :: Force- , optInputFile :: InputFile+ MkHorizonOptions :: { optInputFile :: InputFile , optPackagesDirectory :: PackagesDirectory , optHorizonCommand :: HorizonCommand} -> HorizonOptions deriving stock (Eq, Show)@@ -174,8 +162,7 @@ horizonGenNixOpts :: Parser HorizonOptions horizonGenNixOpts = MkHorizonOptions- <$> forceOption- <*> inputFileOption+ <$> inputFileOption <*> packagesDirectoryOption <*> horizonCommandOpts
src/Horizon/Gen/Nix/Writers.hs view
@@ -9,12 +9,11 @@ ) where import Cabal2nix (Options, cabal2nix')-import Control.Monad (forM_, when, (>=>))+import Control.Monad (forM_, unless, (>=>)) import Data.Map (keys, toList) import qualified Data.Text as T import Distribution.Nixpkgs.Haskell.Derivation (Derivation) import Horizon.Gen.Nix.Cabal2Nix.Options (haskellPackageToCabal2NixOptions)-import Horizon.Gen.Nix.Options (Force (MkForce)) import Horizon.Gen.Nix.Pretty (prettyDerivation) import Horizon.Gen.Nix.Types.OverlayFile (OverlayFile (MkOverlayFile)) import Horizon.Gen.Nix.Types.PackagesDirectory (PackagesDirectory (MkPackagesDirectory))@@ -67,14 +66,14 @@ writeDerivation :: Path b File -> Derivation -> IO () writeDerivation f = writeFile (toFilePath f) . show . prettyDerivation -writeHaskellPackage :: PackagesDirectory -> Force -> Name -> HaskellPackage -> IO ()-writeHaskellPackage (MkPackagesDirectory d) (MkForce b) (MkName f) y = do+writeHaskellPackage :: PackagesDirectory -> Name -> HaskellPackage -> IO ()+writeHaskellPackage (MkPackagesDirectory d) (MkName f) y = do let o = haskellPackageToCabal2NixOptions y createDirectoryIfMissing True (toFilePath d) f' <- parseRelFile $ T.unpack (f <> ".nix") let j = d </> f'- q <- doesFileExist $ toFilePath j- when (b || not q) $ writeCabal2Nix j o+ q <- doesFileExist $ toFilePath j+ unless q $ writeCabal2Nix j o -writeHaskellPackages :: PackagesDirectory -> Force -> PackageList -> IO ()-writeHaskellPackages f d = mapM_ (uncurry $ writeHaskellPackage f d) . toList . fromPackageList+writeHaskellPackages :: PackagesDirectory -> PackageList -> IO ()+writeHaskellPackages d = mapM_ (uncurry $ writeHaskellPackage d) . toList . fromPackageList
test/Spec.hs view
@@ -5,13 +5,12 @@ import Control.Exception (bracket_) import Control.Monad (forM_) import Horizon.Gen.Nix (horizonGenNix)-import Horizon.Gen.Nix.Options (Force (MkForce),- HorizonCommand (MakePackageSetCommand, OverlayCommand),+import Horizon.Gen.Nix.Options (HorizonCommand (MakePackageSetCommand, OverlayCommand), HorizonOptions (MkHorizonOptions), InputFile (MkInputFile), defaultMakePackageSetOptions, defaultOverlayOptions,- defaultPackagesDirectory, optForce,+ defaultPackagesDirectory, optHorizonCommand, optInputFile, optPackagesDirectory) import Path (File, Path, Rel, mkRelFile,@@ -45,7 +44,6 @@ fp <- parseRelFile $ "test/data/" ++ s ++ "/input.dhall" let opts = MkHorizonOptions { optHorizonCommand = cmd- , optForce = MkForce False , optPackagesDirectory = defaultPackagesDirectory , optInputFile = MkInputFile fp }