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 +1/−1
- src/Language/ATS/Package/Build.hs +39/−14
- src/Language/ATS/Package/Exec.hs +27/−11
- stack.yaml +1/−1
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: