shake-cabal 0.1.0.1 → 0.1.0.2
raw patch · 3 files changed
+64/−10 lines, 3 filessetup-changedPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- Setup.hs +0/−2
- shake-cabal.cabal +2/−2
- src/Development/Shake/Cabal.hs +62/−6
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
shake-cabal.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: shake-cabal-version: 0.1.0.1+version: 0.1.0.2 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2018 Vanessa McHale@@ -31,7 +31,7 @@ default-language: Haskell2010 ghc-options: -Wall build-depends:- base >=4.3 && <5,+ base >=4.8 && <5, shake >=0.14, Cabal >=2.2, directory -any,
src/Development/Shake/Cabal.hs view
@@ -23,6 +23,7 @@ import Distribution.PackageDescription.Parsec import Distribution.Pretty import Distribution.Types.CondTree+import Distribution.Types.ForeignLib import Distribution.Types.PackageId import Distribution.Verbosity as Distribution import Distribution.Version@@ -46,13 +47,28 @@ where processOS "darwin" = "osx" processOS x = x --- FIXME: should also work with .x, .cpphs, .y files+-- FIXME: should also work with .x, .cpphs, .y, .c2hs files libraryToFiles :: Library -> [FilePath] libraryToFiles lib = fold [cs, is, hs] where (cs, is) = (cSources &&& includes) $ libBuildInfo lib hs = (++ ".hs") . toFilePath <$> explicitLibModules lib -extract :: CondTree a b Library -> [Library]+fileHelper :: (a -> [ModuleName]) -> a -> [FilePath]+fileHelper = (fmap ((++ ".hs") . toFilePath) .)++exeToFiles :: Executable -> [FilePath]+exeToFiles = fileHelper exeModules++testToFiles :: TestSuite -> [FilePath]+testToFiles = fileHelper testModules++benchToFiles :: Benchmark -> [FilePath]+benchToFiles = fileHelper benchmarkModules++foreignToFiles :: ForeignLib -> [FilePath]+foreignToFiles = fileHelper foreignLibModules++extract :: CondTree a b c -> [c] extract (CondNode d _ []) = [d] extract (CondNode d _ bs) = d : (g =<< bs) where g (CondBranch _ tb fb) = join $ catMaybes [Just $ extract tb, extract <$> fb]@@ -83,10 +99,50 @@ let descr = packageDescription pkg extraSrc = extraSrcFiles descr vers = pkgVersion (package descr)++ mkHelper f = (toList . fmap snd . f) pkg+ libs = toList (condLibrary pkg)- normalSrc = (libraryToFiles <=< extract) =<< libs- dir = (fmap (++ "/") . hsSourceDirs . libBuildInfo <=< extract) =<< libs- dirge = ((++) <$> dir <*>)+ exes = mkHelper condExecutables+ subLibs = mkHelper condSubLibraries+ tests = mkHelper condTestSuites+ benches = mkHelper condBenchmarks+ foreigns = mkHelper condForeignLibs++ extractHelper f xs = (f <=< extract) =<< xs++ normalSrc = extractHelper libraryToFiles libs+ exeSrc = extractHelper exeToFiles exes+ subSrc = extractHelper libraryToFiles subLibs+ testSrc = extractHelper testToFiles tests+ benchSrc = extractHelper benchToFiles benches+ foreignSrc = extractHelper foreignToFiles foreigns++ dirHelper f xs = (fmap (++ "/") . hsSourceDirs . f <=< extract) =<< xs++ dir = dirHelper libBuildInfo libs+ exeDir = dirHelper buildInfo exes+ subDirs = dirHelper libBuildInfo subLibs+ testDirs = dirHelper testBuildInfo tests+ benchDirs = dirHelper benchmarkBuildInfo benches+ foreignDirs = dirHelper foreignLibBuildInfo foreigns++ dirgeHelper d = ((++) <$> d <*>)++ dirge = dirgeHelper dir+ dirgeExe = dirgeHelper exeDir+ dirgeSub = dirgeHelper subDirs+ dirgeTest = dirgeHelper testDirs+ dirgeBench = dirgeHelper benchDirs+ dirgeForeign = dirgeHelper foreignDirs+ h = filterM doesFileExist+ norms <- h (dirge normalSrc)- pure (vers, extraSrc ++ norms)+ exeFiles <- h (dirgeExe exeSrc)+ subFiles <- h (dirgeSub subSrc)+ testFiles <- h (dirgeTest testSrc)+ benchFiles <- h (dirgeBench benchSrc)+ foreignFiles <- h (dirgeForeign foreignSrc)++ pure (vers, extraSrc ++ norms ++ exeFiles ++ subFiles ++ testFiles ++ benchFiles ++ foreignFiles)