packages feed

ats-pkg 2.1.0.6 → 2.1.0.7

raw patch · 4 files changed

+68/−27 lines, 4 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Language.ATS.Package: pkgToAction :: [IO ()] -> [String] -> Pkg -> Rules ()
+ Language.ATS.Package: pkgToAction :: [IO ()] -> [String] -> Maybe String -> Pkg -> Rules ()

Files

ats-pkg.cabal view
@@ -1,5 +1,5 @@ name:                ats-pkg-version:             2.1.0.6+version:             2.1.0.7 synopsis:            Package manager for ATS description:         A collection of scripts to make building ATS projects easy. homepage:            https://github.com/vmchale/atspkg#readme
src/Language/ATS/Package/Build.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TupleSections     #-}  module Language.ATS.Package.Build ( mkPkg                                   , pkgToAction@@ -23,7 +24,7 @@ import           Development.Shake.Clean import           Development.Shake.FilePath import           Development.Shake.Man-import           Dhall                                hiding (bool)+import           Dhall                                hiding (bool, maybe) import           Language.ATS.Package.Compiler import           Language.ATS.Package.Dependency import           Language.ATS.Package.Type            hiding (version)@@ -47,7 +48,8 @@ -- | Build a set of targets build :: [String] -- ^ Targets       -> IO ()-build rs = bool (mkPkg False [buildAll Nothing] rs) (mkPkg False mempty rs) =<< check Nothing+build rs = bool (mkPkgEmpty [buildAll Nothing]) (mkPkgEmpty mempty) =<< check Nothing+    where mkPkgEmpty ts = mkPkg False False ts rs Nothing  -- TODO clean generated ATS mkClean :: Rules ()@@ -108,24 +110,37 @@         need tests         mapM_ cmd_ tests -options :: Bool -> ShakeOptions-options rb = shakeOptions { shakeFiles = ".atspkg"+options :: Bool -> Bool -> [String] -> ShakeOptions+options rb rba rs = shakeOptions { shakeFiles = ".atspkg"                           , shakeThreads = 4                           , shakeLint = Just LintBasic                           , shakeVersion = showVersion version-                          , shakeRebuild = bool mempty [(RebuildNow, ".atspkg/config")] rb+                          , shakeRebuild = foldMap g [ (rb, [(RebuildNow, ".atspkg/config")])+                                                     , (rba, (RebuildNow ,) <$> rs)+                                                     ]                           }+    where g (b, ts) = bool mempty ts b  cleanConfig :: (MonadIO m) => [String] -> m Pkg cleanConfig ["clean"] = pure undefined cleanConfig _         = getConfig Nothing --- TODO verbosity & coloring?-mkPkg :: Bool -> [IO ()] -> [String] -> IO ()-mkPkg rb setup rs = shake (options rb) $-    want rs >>-    mkClean >>-    (pkgToAction setup rs =<< cleanConfig rs)+-- TODO verbosity?+mkPkg :: Bool -- ^ Whether to ignore cached package config+      -> Bool -- ^ Rebuild all targets+      -> [IO ()] -- ^ Setup+      -> [String] -- ^ Targets+      -> Maybe String -- ^ Target triple+      -> IO ()+mkPkg rb rba setup rs tgt = do+    cfg <- cleanConfig rs+    let opt = options rb rba $ pkgToTargets cfg rs+    shake opt $+        foldr (>>) (pure ())+            [ want rs+            , mkClean+            , pkgToAction setup rs tgt =<< cleanConfig rs+            ]  asTuple :: TargetPair -> (Text, Text) asTuple (TargetPair s t) = (s, t)@@ -152,9 +167,17 @@     , mkConfig     ] -pkgToAction :: [IO ()] -> [String] -> Pkg -> Rules ()-pkgToAction setup rs ~(Pkg bs ts mt v v' ds cds cc cf as cdir) =+pkgToTargets :: Pkg -> [FilePath] -> [FilePath]+pkgToTargets ~(Pkg bs _ _ _ _ _ _ _ _ _ _) [] = TL.unpack . target <$> bs+pkgToTargets _ ts                             = ts +pkgToAction :: [IO ()] -- ^ Setup actions to be performed+            -> [String] -- ^ Targets+            -> Maybe String -- ^ Optional compiler triple (overrides 'ccompiler')+            -> Pkg -- ^ Package data type+            -> Rules ()+pkgToAction setup rs tgt ~(Pkg bs ts mt v v' ds cds cc cf as cdir) =+     unless (rs == ["clean"]) $ do          want [".atspkg/config"]@@ -174,7 +197,7 @@      where g (Bin s t ls hs' atg gc') =             atsBin-                (TL.unpack cc)+                cc'                 (TL.unpack <$> cf)                 v                 v'@@ -191,3 +214,5 @@                 targets = fmap (((cedar <> "/") <>) . (-<.> "c") . takeBaseName . TL.unpack) as             want targets             mapM_ (cgen v v') atsSourceDirs++          cc' = maybe (TL.unpack cc) (<> "-gcc") tgt
src/Language/ATS/Package/Exec.hs view
@@ -30,7 +30,11 @@ versionInfo = infoOption ("atspkg version: " ++ showVersion version) (short 'v' <> long "version" <> help "Show version")  data Command = Install-             | Build { _targets :: [String], _recache :: Bool }+             | Build { _targets    :: [String]+                     , _recache    :: Bool+                     , _archTarget :: Maybe String+                     , _rebuildAll :: Bool+                     }              | Clean              | Test              | Fetch { _url :: String }@@ -56,6 +60,15 @@         (long "no-cache"         <> short 'c'         <> help "Turn off configuration caching")+    <*> optional+        (strOption+        (long "target"+        <> short 't'+        <> help "Set target by using its triple"))+    <*> switch+        (long "rebuild"+        <> short 'r'+        <> help "Force rebuild of all targets")  fetch :: Parser Command fetch = Fetch <$>@@ -69,22 +82,25 @@     fetchDeps True mempty [Dependency lib dirName url' undefined] [] True     ps <- getSubdirs p     pkgDir <- fromMaybe p <$> findFile (p:ps) "atspkg.dhall"-    let a = withCurrentDirectory (takeDirectory pkgDir) (mkPkg False mempty ["install"])+    let a = withCurrentDirectory (takeDirectory pkgDir) (mkPkg False False mempty ["install"] Nothing)     bool (buildAll (Just pkgDir) >> a) a =<< check (Just pkgDir)  exec :: IO () exec = execParser wrapper >>= run +runHelper :: Bool -> Bool -> [String] -> Maybe String -> IO ()+runHelper rb rba rs tgt = bool+    (mkPkg rb rba [buildAll Nothing] rs tgt)+    (mkPkg rb rba mempty rs tgt)+    =<< check Nothing+ run :: Command -> IO () run Nuke = cleanAll run (Fetch u) = fetchPkg u-run Clean = mkPkg False mempty ["clean"]-run c = bool (mkPkg rb [buildAll Nothing] rs) (mkPkg rb mempty rs) =<< check Nothing+run Clean = mkPkg False False mempty ["clean"] Nothing+run (Build rs rb tgt rba) = runHelper rb rba rs tgt+run c = runHelper False False rs Nothing     where rs = g c-          g Install      = ["install"]-          g (Build ts _) = ts-          g Test         = ["test"]-          g _            = undefined-          rb = h c-          h (Build _ True) = True-          h _              = False+          g Install = ["install"]+          g Test    = ["test"]+          g _       = undefined
stack.yaml view
@@ -6,7 +6,7 @@   - shake-ext-2.1.0.1   - shake-ats-1.1.0.2   - composition-prelude-1.1.0.2-  - language-ats-0.1.1.15+  - language-ats-0.1.1.17   - cli-setup-0.2.0.1   - hs2ats-0.2.0.3 flags: