From b42f9095993f5862d4450a84f6cf535b7a252d48 Mon Sep 17 00:00:00 2001 From: Daniel Gröber Date: Mon, 25 Sep 2017 10:45:03 +0200 Subject: Remove 'Options' from shared Types module Only needed at compiletime, were being hidden everywhere else already. --- CabalHelper/Compiletime/Compile.hs | 2 +- CabalHelper/Compiletime/Data.hs | 2 +- CabalHelper/Compiletime/Log.hs | 2 +- CabalHelper/Compiletime/Types.hs | 32 +++++++++++++++ CabalHelper/Compiletime/Wrapper.hs | 3 +- CabalHelper/Runtime/Main.hs | 2 +- CabalHelper/Shared/InterfaceTypes.hs | 76 ++++++++++++++++++++++++++++++++++++ CabalHelper/Shared/Types.hs | 73 ---------------------------------- Distribution/Helper.hs | 2 +- cabal-helper.cabal | 8 ++-- tests/CompileTest.hs | 2 +- 11 files changed, 120 insertions(+), 84 deletions(-) create mode 100644 CabalHelper/Compiletime/Types.hs create mode 100644 CabalHelper/Shared/InterfaceTypes.hs delete mode 100644 CabalHelper/Shared/Types.hs diff --git a/CabalHelper/Compiletime/Compile.hs b/CabalHelper/Compiletime/Compile.hs index 1c28903..dfa52a0 100644 --- a/CabalHelper/Compiletime/Compile.hs +++ b/CabalHelper/Compiletime/Compile.hs @@ -43,9 +43,9 @@ import Distribution.Text (display) import Paths_cabal_helper (version) import CabalHelper.Compiletime.Data import CabalHelper.Compiletime.Log +import CabalHelper.Compiletime.Types import CabalHelper.Shared.Common import CabalHelper.Shared.Sandbox (getSandboxPkgDb) -import CabalHelper.Shared.Types data Compile = Compile { compCabalSourceDir :: Maybe FilePath, diff --git a/CabalHelper/Compiletime/Data.hs b/CabalHelper/Compiletime/Data.hs index 9539ef3..6b096d7 100644 --- a/CabalHelper/Compiletime/Data.hs +++ b/CabalHelper/Compiletime/Data.hs @@ -76,5 +76,5 @@ sourceFiles = , ("Runtime/Licenses.hs", $(LitE . StringL <$> runIO (UTF8.toString <$> BS.readFile "CabalHelper/Runtime/Licenses.hs"))) , ("Shared/Common.hs", $(LitE . StringL <$> runIO (UTF8.toString <$> BS.readFile "CabalHelper/Shared/Common.hs"))) , ("Shared/Sandbox.hs", $(LitE . StringL <$> runIO (UTF8.toString <$> BS.readFile "CabalHelper/Shared/Sandbox.hs"))) - , ("Shared/Types.hs", $(LitE . StringL <$> runIO (UTF8.toString <$> BS.readFile "CabalHelper/Shared/Types.hs"))) + , ("Shared/InterfaceTypes.hs", $(LitE . StringL <$> runIO (UTF8.toString <$> BS.readFile "CabalHelper/Shared/InterfaceTypes.hs"))) ] diff --git a/CabalHelper/Compiletime/Log.hs b/CabalHelper/Compiletime/Log.hs index e4033f1..6931fa9 100644 --- a/CabalHelper/Compiletime/Log.hs +++ b/CabalHelper/Compiletime/Log.hs @@ -7,7 +7,7 @@ import Data.String import System.IO import Prelude -import CabalHelper.Shared.Types +import CabalHelper.Compiletime.Types vLog :: MonadIO m => Options -> String -> m () vLog Options { verbose = True } msg = diff --git a/CabalHelper/Compiletime/Types.hs b/CabalHelper/Compiletime/Types.hs new file mode 100644 index 0000000..138baa7 --- /dev/null +++ b/CabalHelper/Compiletime/Types.hs @@ -0,0 +1,32 @@ +-- cabal-helper: Simple interface to Cabal's configuration state +-- Copyright (C) 2015 Daniel Gröber +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU Affero General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Affero General Public License for more details. +-- +-- You should have received a copy of the GNU Affero General Public License +-- along with this program. If not, see . + +{-# LANGUAGE DeriveGeneric, DeriveDataTypeable, DefaultSignatures #-} +module CabalHelper.Compiletime.Types where + +import Data.Version + +data Options = Options { + verbose :: Bool + , ghcProgram :: FilePath + , ghcPkgProgram :: FilePath + , cabalProgram :: FilePath + , cabalVersion :: Maybe Version + , cabalPkgDb :: Maybe FilePath +} + +defaultOptions :: Options +defaultOptions = Options False "ghc" "ghc-pkg" "cabal" Nothing Nothing diff --git a/CabalHelper/Compiletime/Wrapper.hs b/CabalHelper/Compiletime/Wrapper.hs index dccbc29..7325654 100644 --- a/CabalHelper/Compiletime/Wrapper.hs +++ b/CabalHelper/Compiletime/Wrapper.hs @@ -42,8 +42,9 @@ import Paths_cabal_helper (version) import CabalHelper.Compiletime.Compat.Version import CabalHelper.Compiletime.Compile import CabalHelper.Compiletime.GuessGhc +import CabalHelper.Compiletime.Types import CabalHelper.Shared.Common -import CabalHelper.Shared.Types +import CabalHelper.Shared.InterfaceTypes usage :: IO () usage = do diff --git a/CabalHelper/Runtime/Main.hs b/CabalHelper/Runtime/Main.hs index 570cf58..c7f6652 100644 --- a/CabalHelper/Runtime/Main.hs +++ b/CabalHelper/Runtime/Main.hs @@ -122,7 +122,7 @@ import Text.Printf import CabalHelper.Shared.Sandbox import CabalHelper.Shared.Common -import CabalHelper.Shared.Types hiding (Options(..)) +import CabalHelper.Shared.InterfaceTypes import CabalHelper.Runtime.Licenses diff --git a/CabalHelper/Shared/InterfaceTypes.hs b/CabalHelper/Shared/InterfaceTypes.hs new file mode 100644 index 0000000..88858d0 --- /dev/null +++ b/CabalHelper/Shared/InterfaceTypes.hs @@ -0,0 +1,76 @@ +-- cabal-helper: Simple interface to Cabal's configuration state +-- Copyright (C) 2015,2017 Daniel Gröber +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU Affero General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Affero General Public License for more details. +-- +-- You should have received a copy of the GNU Affero General Public License +-- along with this program. If not, see . + +{-# LANGUAGE DeriveGeneric, DeriveDataTypeable, DefaultSignatures #-} + +{-| +Module : CabalHelper.Shared.InterfaceTypes +Description : Types which are used by c-h library and executable to communicate +License : AGPL-3 + +These types are used to communicate between the cabal-helper library and main +executable, using Show/Read. If any types in this module change the major +version must be bumped since this will be exposed in the @Distribution.Helper@ +module. + +The cached executables in @$XDG_CACHE_DIR/cabal-helper@ use the cabal-helper +version (among other things) as a cache key so we don't need to worry about +talking to an old executable. +-} +module CabalHelper.Shared.InterfaceTypes where + +import GHC.Generics +import Data.Version + +data ChResponse + = ChResponseCompList [(ChComponentName, [String])] + | ChResponseEntrypoints [(ChComponentName, ChEntrypoint)] + | ChResponseList [String] + | ChResponsePkgDbs [ChPkgDb] + | ChResponseLbi String + | ChResponseVersion String Version + | ChResponseLicenses [(String, [(String, Version)])] + | ChResponseFlags [(String, Bool)] + deriving (Eq, Ord, Read, Show, Generic) + +data ChComponentName = ChSetupHsName + | ChLibName + | ChSubLibName String + | ChFLibName String + | ChExeName String + | ChTestName String + | ChBenchName String + deriving (Eq, Ord, Read, Show, Generic) + +newtype ChModuleName = ChModuleName String + deriving (Eq, Ord, Read, Show, Generic) + +data ChEntrypoint = ChSetupEntrypoint -- ^ Almost like 'ChExeEntrypoint' but + -- @main-is@ could either be @"Setup.hs"@ + -- or @"Setup.lhs"@. Since we don't know + -- where the source directory is you have + -- to find these files. + | ChLibEntrypoint { chExposedModules :: [ChModuleName] + , chOtherModules :: [ChModuleName] + } + | ChExeEntrypoint { chMainIs :: FilePath + , chOtherModules :: [ChModuleName] + } deriving (Eq, Ord, Read, Show, Generic) + +data ChPkgDb = ChPkgGlobal + | ChPkgUser + | ChPkgSpecific FilePath + deriving (Eq, Ord, Read, Show, Generic) diff --git a/CabalHelper/Shared/Types.hs b/CabalHelper/Shared/Types.hs deleted file mode 100644 index 18d532b..0000000 --- a/CabalHelper/Shared/Types.hs +++ /dev/null @@ -1,73 +0,0 @@ --- cabal-helper: Simple interface to Cabal's configuration state --- Copyright (C) 2015 Daniel Gröber --- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU Affero General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU Affero General Public License for more details. --- --- You should have received a copy of the GNU Affero General Public License --- along with this program. If not, see . - -{-# LANGUAGE DeriveGeneric, DeriveDataTypeable, DefaultSignatures #-} -module CabalHelper.Shared.Types where - -import GHC.Generics -import Data.Version - -newtype ChModuleName = ChModuleName String - deriving (Eq, Ord, Read, Show, Generic) - -data ChComponentName = ChSetupHsName - | ChLibName - | ChSubLibName String - | ChFLibName String - | ChExeName String - | ChTestName String - | ChBenchName String - deriving (Eq, Ord, Read, Show, Generic) - -data ChResponse - = ChResponseCompList [(ChComponentName, [String])] - | ChResponseEntrypoints [(ChComponentName, ChEntrypoint)] - | ChResponseList [String] - | ChResponsePkgDbs [ChPkgDb] - | ChResponseLbi String - | ChResponseVersion String Version - | ChResponseLicenses [(String, [(String, Version)])] - | ChResponseFlags [(String, Bool)] - deriving (Eq, Ord, Read, Show, Generic) - -data ChEntrypoint = ChSetupEntrypoint -- ^ Almost like 'ChExeEntrypoint' but - -- @main-is@ could either be @"Setup.hs"@ - -- or @"Setup.lhs"@. Since we don't know - -- where the source directory is you have - -- to find these files. - | ChLibEntrypoint { chExposedModules :: [ChModuleName] - , chOtherModules :: [ChModuleName] - } - | ChExeEntrypoint { chMainIs :: FilePath - , chOtherModules :: [ChModuleName] - } deriving (Eq, Ord, Read, Show, Generic) - -data ChPkgDb = ChPkgGlobal - | ChPkgUser - | ChPkgSpecific FilePath - deriving (Eq, Ord, Read, Show, Generic) - -data Options = Options { - verbose :: Bool - , ghcProgram :: FilePath - , ghcPkgProgram :: FilePath - , cabalProgram :: FilePath - , cabalVersion :: Maybe Version - , cabalPkgDb :: Maybe FilePath -} - -defaultOptions :: Options -defaultOptions = Options False "ghc" "ghc-pkg" "cabal" Nothing Nothing diff --git a/Distribution/Helper.hs b/Distribution/Helper.hs index 7bd76e9..6c31208 100644 --- a/Distribution/Helper.hs +++ b/Distribution/Helper.hs @@ -96,7 +96,7 @@ import GHC.Generics import Prelude import Paths_cabal_helper (getLibexecDir) -import CabalHelper.Shared.Types hiding (Options(..)) +import CabalHelper.Shared.InterfaceTypes import CabalHelper.Shared.Sandbox -- | Paths or names of various programs we need. diff --git a/cabal-helper.cabal b/cabal-helper.cabal index 31d3aca..a205290 100644 --- a/cabal-helper.cabal +++ b/cabal-helper.cabal @@ -57,8 +57,8 @@ library default-extensions: NondecreasingIndentation exposed-modules: Distribution.Helper other-modules: + CabalHelper.Shared.InterfaceTypes CabalHelper.Shared.Sandbox - CabalHelper.Shared.Types Paths_cabal_helper ghc-options: -Wall build-depends: base < 5 && >= 4.5 @@ -82,9 +82,9 @@ executable cabal-helper-wrapper CabalHelper.Compiletime.Data CabalHelper.Compiletime.GuessGhc CabalHelper.Compiletime.Log + CabalHelper.Compiletime.Types CabalHelper.Shared.Common CabalHelper.Shared.Sandbox - CabalHelper.Shared.Types Paths_cabal_helper ghc-options: -Wall scope: private @@ -116,9 +116,9 @@ test-suite compile-test CabalHelper.Compiletime.Compile CabalHelper.Compiletime.Data CabalHelper.Compiletime.Log + CabalHelper.Compiletime.Types CabalHelper.Shared.Common CabalHelper.Shared.Sandbox - CabalHelper.Shared.Types Distribution.Helper Paths_cabal_helper hs-source-dirs: . @@ -157,8 +157,8 @@ executable cabal-helper-main other-modules: CabalHelper.Runtime.Licenses CabalHelper.Shared.Common + CabalHelper.Shared.InterfaceTypes CabalHelper.Shared.Sandbox - CabalHelper.Shared.Types ghc-options: -Wall -fno-warn-unused-imports build-depends: base , Cabal diff --git a/tests/CompileTest.hs b/tests/CompileTest.hs index 4d22b67..b408788 100644 --- a/tests/CompileTest.hs +++ b/tests/CompileTest.hs @@ -18,8 +18,8 @@ import Prelude import CabalHelper.Compiletime.Compat.Environment import CabalHelper.Compiletime.Compat.Version import CabalHelper.Compiletime.Compile +import CabalHelper.Compiletime.Types import CabalHelper.Shared.Common -import CabalHelper.Shared.Types runReadP'Dist :: Dist.ReadP t t -> String -> t runReadP'Dist p i = case filter ((=="") . snd) $ Dist.readP_to_S p i of -- cgit v1.2.3