hpack-convert 0.14.5 → 0.14.6
raw patch · 10 files changed
+98/−25 lines, 10 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Hpack.Convert: processDir :: String -> String
+ Hpack.Convert: processDirs :: [String] -> [String]
Files
- hpack-convert.cabal +5/−1
- src/Hpack/Config.hs +2/−0
- src/Hpack/Convert.hs +30/−17
- src/Hpack/Util.hs +1/−1
- test/Hpack/ConfigSpec.hs +2/−4
- test/Hpack/UtilSpec.hs +8/−2
- test/data/cabal-init-with-dot.cabal +13/−0
- test/data/cabal-init-with-dot.cabal.yaml +11/−0
- test/data/cabal-init-with-tested-with.cabal +14/−0
- test/data/cabal-init-with-tested-with.cabal.yaml +12/−0
hpack-convert.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: hpack-convert-version: 0.14.5+version: 0.14.6 synopsis: Convert Cabal manifests into hpack's package.yamls category: Development homepage: https://github.com/yamadapc/hpack-convert#readme@@ -33,8 +33,12 @@ ./test/data/cabal-init-with-conditionals-buildable5.cabal.yaml ./test/data/cabal-init-with-conditionals.cabal ./test/data/cabal-init-with-conditionals.cabal.yaml+ ./test/data/cabal-init-with-dot.cabal+ ./test/data/cabal-init-with-dot.cabal.yaml ./test/data/cabal-init-with-executables.cabal ./test/data/cabal-init-with-executables.cabal.yaml+ ./test/data/cabal-init-with-tested-with.cabal+ ./test/data/cabal-init-with-tested-with.cabal.yaml ./test/data/cabal-init-with-tests.cabal ./test/data/cabal-init-with-tests.cabal.yaml ./test/data/ChangeLog.md
src/Hpack/Config.hs view
@@ -11,6 +11,8 @@ #endif {-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE OverloadedLists #-}+{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE UndecidableInstances #-}
src/Hpack/Convert.hs view
@@ -1,22 +1,24 @@-{-# LANGUAGE NamedFieldPuns #-}-{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE RankNTypes #-} {-# LANGUAGE RecordWildCards #-} module Hpack.Convert where -import Prelude ()+import Data.Char+import Data.Monoid+import Prelude () import Prelude.Compat import Data.Maybe-import qualified Data.Version as Version-import qualified Distribution.Compiler as Compiler-import qualified Distribution.InstalledPackageInfo as Cabal-import qualified Distribution.Package as Cabal-import qualified Distribution.PackageDescription as Cabal+import qualified Data.Version as Version+import qualified Distribution.Compiler as Compiler+import qualified Distribution.InstalledPackageInfo as Cabal+import qualified Distribution.Package as Cabal+import qualified Distribution.PackageDescription as Cabal import qualified Distribution.PackageDescription.Parse as Cabal-import qualified Distribution.Text as Cabal-import qualified Distribution.Version as Cabal-import Hpack.Config hiding (package)-import Text.PrettyPrint (fsep, (<+>))+import qualified Distribution.Text as Cabal+import qualified Distribution.Version as Cabal+import Hpack.Config hiding (package)+import Text.PrettyPrint (fsep, (<+>)) -- * Public API @@ -40,8 +42,9 @@ , packageLicense = Just (show (Cabal.disp license)) , packageLicenseFile = listToMaybe licenseFiles , packageTestedWith =+ map toUpper . show .- fsep . map (\(f, vr) -> Cabal.disp f <+> Cabal.disp vr ) <$>+ fsep . map (\(f, vr) -> Cabal.disp f <> Cabal.disp vr ) <$> nullNothing testedWith , packageFlags = map (\Cabal.MkFlag{..} ->@@ -85,7 +88,7 @@ -- ( Just SourceRepository { sourceRepositoryUrl = fromMaybe "" repoLocation -- TODO - this is broken (?)- , sourceRepositorySubdir = repoSubdir+ , sourceRepositorySubdir = fmap processDir repoSubdir } -- TODO - Warnings -- , case repoLocation of@@ -191,7 +194,7 @@ sectionWithBuildInfo :: a -> Cabal.BuildInfo -> Section a sectionWithBuildInfo d Cabal.BuildInfo{..} = Section { sectionData = d- , sectionSourceDirs = hsSourceDirs+ , sectionSourceDirs = processDirs hsSourceDirs , sectionDependencies = map fromDependency targetBuildDepends , sectionDefaultExtensions = map (show . Cabal.disp) defaultExtensions@@ -203,9 +206,9 @@ , sectionCppOptions = cppOptions , sectionCCOptions = ccOptions , sectionCSources = cSources- , sectionExtraLibDirs = extraLibDirs+ , sectionExtraLibDirs = processDirs extraLibDirs , sectionExtraLibraries = extraLibs- , sectionIncludeDirs = includeDirs+ , sectionIncludeDirs = processDirs includeDirs , sectionInstallIncludes = installIncludes , sectionLdOptions = ldOptions , sectionBuildable = Just buildable@@ -264,3 +267,13 @@ -- Just [1, 2, 3] nullNothing :: [a] -> Maybe [a] nullNothing s = const s <$> listToMaybe s++processDirs :: [String] -> [String]+processDirs = map processDir++-- | Replaces @.@ with @./.@+--+-- See https://github.com/sol/hpack/issues/119+processDir :: String -> String+processDir "." = "./."+processDir d = d
src/Hpack/Util.hs view
@@ -73,7 +73,7 @@ toModule path = case reverse path of [] -> Nothing x : xs -> do- m <- stripSuffix ".hs" x <|> stripSuffix ".lhs" x+ m <- stripSuffix ".hs" x <|> stripSuffix ".lhs" x <|> stripSuffix ".hsc" x let name = reverse (m : xs) guard (isModule name) >> return (intercalate "." name) where
test/Hpack/ConfigSpec.hs view
@@ -813,10 +813,8 @@ (do touch "src/Main.hs" touch "src/Foo.hs"- touch "src/Bar.hs"- touch "src/Baz.lhs" )- (map (executableOtherModules . sectionData) . packageExecutables >>> (`shouldBe` [["Bar", "Baz", "Foo"]]))+ (map (executableOtherModules . sectionData) . packageExecutables >>> (`shouldBe` [["Foo"]])) it "allows to specify other-modules" $ do withPackageConfig [i|@@ -993,7 +991,7 @@ foo: ain: driver/Main.hs |]- readPackageConfig file `shouldReturn` Left (file ++ ": Error in $.executables.foo: failed to parse field executables: The key \"main\" was not found")+ readPackageConfig file >>= (`shouldSatisfy` isLeft) context "when package.yaml does not exist" $ do it "returns an error" $ \dir -> do
test/Hpack/UtilSpec.hs view
@@ -37,8 +37,14 @@ parseMain "Foo.bar" `shouldBe` ("Foo.hs", ["-main-is Foo.bar"]) describe "toModule" $ do- it "maps paths to module names" $ do- toModule ["Foo", "Bar", "Baz.hs"] `shouldBe` Just "Foo.Bar.Baz"+ it "maps .hs paths to module names" $ do+ toModule ["Foo", "Bar", "Baz.hs"] `shouldBe` Just "Foo.Bar.Baz"++ it "maps .lhs paths to module names" $ do+ toModule ["Foo", "Bar", "Baz.lhs"] `shouldBe` Just "Foo.Bar.Baz"++ it "maps .hsc paths to module names" $ do+ toModule ["Foo", "Bar", "Baz.hsc"] `shouldBe` Just "Foo.Bar.Baz" it "rejects invalid module names" $ do toModule ["resources", "hello.hs"] `shouldBe` Nothing
+ test/data/cabal-init-with-dot.cabal view
@@ -0,0 +1,13 @@+name: cabal-init-minimal+version: 0.1.0.0+license: PublicDomain+author: Pedro Tacla Yamada+maintainer: tacla.yamada@gmail.com+build-type: Simple+extra-source-files: ChangeLog.md+cabal-version: >=1.10++library+ build-depends: base >=4.8 && <4.9+ hs-source-dirs: .+ default-language: Haskell2010
+ test/data/cabal-init-with-dot.cabal.yaml view
@@ -0,0 +1,11 @@+name: cabal-init-minimal+version: '0.1.0.0'+author: Pedro Tacla Yamada+maintainer: tacla.yamada@gmail.com+license: PublicDomain+extra-source-files:+- ChangeLog.md+dependencies:+- base >=4.8 && <4.9+library:+ source-dirs: ./.
+ test/data/cabal-init-with-tested-with.cabal view
@@ -0,0 +1,14 @@+name: cabal-init-minimal+version: 0.1.0.0+license: PublicDomain+author: Pedro Tacla Yamada+maintainer: tacla.yamada@gmail.com+build-type: Simple+extra-source-files: ChangeLog.md+cabal-version: >=1.10+tested-with: GHC==8.0.1, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2++library+ build-depends: base >=4.8 && <4.9+ hs-source-dirs: src+ default-language: Haskell2010
+ test/data/cabal-init-with-tested-with.cabal.yaml view
@@ -0,0 +1,12 @@+name: cabal-init-minimal+version: '0.1.0.0'+author: Pedro Tacla Yamada+maintainer: tacla.yamada@gmail.com+license: PublicDomain+tested-with: GHC==8.0.1 GHC==7.10.3 GHC==7.8.4 GHC==7.6.3 GHC==7.4.2+extra-source-files:+- ChangeLog.md+dependencies:+- base >=4.8 && <4.9+library:+ source-dirs: src