packages feed

stack-lib (empty) → 0.1.0.0

raw patch · 10 files changed

+218/−0 lines, 10 filesdep +basedep +monad-loggerdep +pathsetup-changed

Dependencies added: base, monad-logger, path, stack, time, transformers

Files

+ LICENSE view
@@ -0,0 +1,30 @@+Copyright Clinton Mead (c) 2017++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above+      copyright notice, this list of conditions and the following+      disclaimer in the documentation and/or other materials provided+      with the distribution.++    * Neither the name of Clinton Mead nor the names of other+      contributors may be used to endorse or promote products derived+      from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ src/Stack/Lib/Build.hs view
@@ -0,0 +1,18 @@+module Stack.Lib.Build (build, buildWithResolver, buildWithResolvers) where++import Stack.Types.Config (globalResolver)+import Stack.Types.Config.Build (defaultBuildOptsCLI)+import Stack.Lib.LowerLevel.Runners (defaultGlobalOpts)+import Stack.Lib.Class.IsAbstractResolver (IsAbstractResolver(toAbstractResolver))+import Stack.Lib.LowerLevel.Build (buildWithOptions)++import Control.Monad (mapM_)++buildWithResolver :: IsAbstractResolver resolver => resolver -> IO ()+buildWithResolver resolver = buildWithOptions defaultGlobalOpts{globalResolver = Just (toAbstractResolver resolver)} defaultBuildOptsCLI++buildWithResolvers :: (Foldable f, IsAbstractResolver resolver) => f resolver -> IO ()+buildWithResolvers = mapM_ buildWithResolver++build :: IO ()+build = buildWithOptions defaultGlobalOpts defaultBuildOptsCLI
+ src/Stack/Lib/Class/IsAbstractResolver.hs view
@@ -0,0 +1,6 @@+module Stack.Lib.Class.IsAbstractResolver (IsAbstractResolver(toAbstractResolver), AbstractResolver) where++import Stack.Types.Resolver (AbstractResolver)++class IsAbstractResolver t where+  toAbstractResolver :: t -> AbstractResolver
+ src/Stack/Lib/LowerLevel/Build.hs view
@@ -0,0 +1,13 @@+module Stack.Lib.LowerLevel.Build (buildWithOptions) where++import Stack.Prelude (RIO)+import Stack.Types.Config (EnvConfig)++import Stack.Types.Config (GlobalOpts)+import Stack.Types.Config.Build (BuildOptsCLI)+import Stack.Lib.LowerLevel.Runners+import qualified Stack.Build++buildWithOptions :: GlobalOpts -> BuildOptsCLI -> IO ()+buildWithOptions globalOpts buildOptsCLI =+  runStackWithGlobalOpts globalOpts ((Stack.Build.build (const (pure ())) Nothing buildOptsCLI) :: RIO EnvConfig ())
+ src/Stack/Lib/LowerLevel/GlobalOpts.hs view
@@ -0,0 +1,20 @@+module Stack.Lib.LowerLevel.GlobalOpts (defaultGlobalOpts) where++import Control.Monad.Logger (LogLevel(LevelInfo))+import Stack.Types.Runner (ColorWhen(ColorNever))+import Stack.Types.Config (GlobalOpts(..), StackYamlLoc(SYLDefault))++defaultGlobalOpts :: GlobalOpts+defaultGlobalOpts = GlobalOpts {+  globalReExecVersion = Nothing,+  globalDockerEntrypoint = Nothing,+  globalLogLevel = LevelInfo,+  globalTimeInLog = True,+  globalConfigMonoid = mempty,+  globalResolver = Nothing,+  globalCompiler = Nothing,+  globalTerminal = False,+  globalColorWhen = ColorNever,+  globalTermWidth = Nothing,+  globalStackYaml = SYLDefault+}
+ src/Stack/Lib/LowerLevel/Runners.hs view
@@ -0,0 +1,36 @@+module Stack.Lib.LowerLevel.Runners (+  runStack,+  runStackWithResolver,+  RunStack(runStackWithGlobalOpts),+  defaultGlobalOpts+  )+where++import Stack.Prelude (RIO, runRIO)+import Stack.Types.Config (EnvConfig, Config, GlobalOpts(globalResolver, globalCompiler), lcConfig, lcLoadBuildConfig)+import Stack.Runners (loadConfigWithOpts)+import Stack.Setup (setupEnv)++import Stack.Lib.Type.Resolver (Resolver)+import Stack.Lib.LowerLevel.GlobalOpts (defaultGlobalOpts)+import Stack.Lib.Class.IsAbstractResolver (toAbstractResolver)++class RunStack config where+  runStackWithGlobalOpts :: GlobalOpts -> RIO config a -> IO a++instance RunStack EnvConfig where+  runStackWithGlobalOpts globalOpts rio = loadConfigWithOpts globalOpts f where+    f loadConfig = do+      buildConfig <- lcLoadBuildConfig loadConfig (globalCompiler globalOpts)+      envConfig <- runRIO buildConfig (setupEnv Nothing)+      runRIO envConfig rio++instance RunStack Config where+  runStackWithGlobalOpts globalOpts rio = loadConfigWithOpts globalOpts f where+    f loadConfig = runRIO (lcConfig loadConfig) rio++runStackWithResolver :: RunStack config => Resolver -> RIO config a -> IO a+runStackWithResolver resolver = runStackWithGlobalOpts defaultGlobalOpts{globalResolver = Just (toAbstractResolver resolver)}++runStack :: RunStack config => RIO config a -> IO a+runStack = runStackWithGlobalOpts defaultGlobalOpts
+ src/Stack/Lib/Snapshots.hs view
@@ -0,0 +1,12 @@+module Stack.Lib.Snapshots (getSnapshots) where++import qualified Stack.Config++import Stack.Prelude (RIO)+import Stack.Types.Config (Config)++import Stack.Types.Resolver (Snapshots)+import Stack.Lib.LowerLevel.Runners (runStack)++getSnapshots :: IO Snapshots+getSnapshots = runStack (Stack.Config.getSnapshots :: RIO Config Snapshots)
+ src/Stack/Lib/Type/Resolver.hs view
@@ -0,0 +1,34 @@+module Stack.Lib.Type.Resolver (+  Resolver(..)+  ) where++import Data.Ord (Ordering(LT, EQ, GT))+import Data.Time.Calendar (Day)++import qualified Stack.Types.Resolver as STR+import Stack.Lib.Class.IsAbstractResolver (IsAbstractResolver(toAbstractResolver))++data Resolver = LatestNightly | LatestLTS | LatestLTSMajor !Int | ExactLTS !Int !Int | ExactNightly !Day deriving Eq++instance Ord Resolver where+  LatestNightly `compare` LatestNightly = EQ+  LatestNightly `compare` _ = GT+  _ `compare` LatestNightly = LT+  ExactNightly day1 `compare` ExactNightly day2 = day1 `compare` day2+  ExactNightly{} `compare` _ = GT+  _ `compare` ExactNightly{} = LT+  LatestLTS `compare` LatestLTS = EQ+  LatestLTS `compare` _ = GT+  _ `compare` LatestLTS = LT+  LatestLTSMajor x1 `compare` LatestLTSMajor x2 = x1 `compare` x2+  ExactLTS x1 y1 `compare` ExactLTS x2 y2 = (x1, y1) `compare` (x2, y2)+  LatestLTSMajor x1 `compare` ExactLTS x2 _y2 = if x1 >= x2 then GT else LT+  ExactLTS x1 _y1 `compare` LatestLTSMajor x2 = if x1 > x2 then GT else LT++instance IsAbstractResolver Resolver where+  toAbstractResolver resolver = case resolver of+    LatestNightly -> STR.ARLatestNightly+    LatestLTS -> STR.ARLatestLTS+    LatestLTSMajor x -> STR.ARLatestLTSMajor x+    ExactLTS x y -> STR.ARResolver (STR.ResolverSnapshot (STR.LTS x y))+    ExactNightly date -> STR.ARResolver (STR.ResolverSnapshot (STR.Nightly date))
+ stack-lib.cabal view
@@ -0,0 +1,47 @@+-- This file has been generated from package.yaml by hpack version 0.20.0.+--+-- see: https://github.com/sol/hpack+--+-- hash: 8a944b11e33bfaea9fdb1a2f7d530401e314bb15d90dee1c554f19bbe2594ecd++name:           stack-lib+version:        0.1.0.0+synopsis:       Wrapper to use stack as a library+description:    Some wrapper functions around [stack](https://hackage.haskell.org/package/stack) intended to make it easier to use [stack](https://hackage.haskell.org/package/stack) as a library.+category:       Development+homepage:       https://github.com/clintonmead/stack-lib#readme+bug-reports:    https://github.com/clintonmead/stack-lib/issues+author:         Clinton Mead+maintainer:     clintonmead@gmail.com+copyright:      Copyright: (c) 2017 Clinton Mead+license:        BSD3+license-file:   LICENSE+build-type:     Simple+cabal-version:  >= 1.10++source-repository head+  type: git+  location: https://github.com/clintonmead/stack-lib++library+  hs-source-dirs:+      src+  ghc-options: -Wall+  build-depends:+      base >=4.7 && <5+    , monad-logger+    , path+    , stack+    , time+    , transformers+  exposed-modules:+      Stack.Lib.Build+      Stack.Lib.Class.IsAbstractResolver+      Stack.Lib.LowerLevel.Build+      Stack.Lib.LowerLevel.GlobalOpts+      Stack.Lib.LowerLevel.Runners+      Stack.Lib.Snapshots+      Stack.Lib.Type.Resolver+  other-modules:+      Paths_stack_lib+  default-language: Haskell2010