packages feed

stackage-sandbox 0.1.2 → 0.1.3

raw patch · 3 files changed

+42/−10 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

ChangeLog.md view
@@ -1,3 +1,7 @@+## 0.1.3++* Added stk sandbox print (#3)+ ## 0.1.2  * Migrated off of system-filepath and system-fileio
main/Sandbox.hs view
@@ -6,14 +6,14 @@ module Main where  import Conduit-import Control.Exception (Exception, bracket_, catch, throwIO, evaluate)+import Control.Exception (Exception, bracket_, catch, throwIO) import Control.Monad (when)-import Data.Attoparsec.ByteString ((<?>))-import qualified Data.Attoparsec.ByteString as Parse-import qualified Data.Attoparsec.ByteString.Char8 as Parse+--import Data.Attoparsec.ByteString ((<?>))+--import qualified Data.Attoparsec.ByteString as Parse+--import qualified Data.Attoparsec.ByteString.Char8 as Parse import Data.ByteString (ByteString)-import Data.Conduit.Attoparsec (conduitParserEither)-import Data.IORef (newIORef, readIORef, modifyIORef)+--import Data.Conduit.Attoparsec (conduitParserEither)+--import Data.IORef (newIORef, readIORef, modifyIORef) import qualified Data.List as List import Data.Maybe import Data.Monoid@@ -24,14 +24,14 @@ import qualified Data.Text.Lazy.Builder.Int as Builder import qualified Data.Text.Lazy as LText import Data.Typeable (Typeable)-import Options.Applicative hiding (header, progDesc)+import Options.Applicative hiding (header, progDesc, short, action) import Stackage.CLI import System.Directory import System.Environment (lookupEnv) import System.Exit-import System.FilePath (addTrailingPathSeparator, (</>))+import System.FilePath import System.IO (hPutStrLn, stderr, openFile, IOMode(AppendMode))-import System.IO.Error (isDoesNotExistError)+--import System.IO.Error (isDoesNotExistError) import System.Process (callProcess, readProcess) import qualified Paths_stackage_sandbox as CabalInfo @@ -44,7 +44,10 @@   | Unregister Package   | Delete (Maybe Snapshot)   | Upgrade (Maybe Snapshot)+  | Print PrintOpt +data PrintOpt = PrintShort | PrintFull+ data SandboxException   = NoHomeEnvironmentVariable   | AlreadyAtSnapshot@@ -97,6 +100,9 @@ upgradeDesc :: String upgradeDesc = "Upgrade to the given SNAPSHOT. Defaults to the latest LTS." +printDesc :: String+printDesc = "Print the sandbox currently in use"+ subcommands = do   addCommand "init" "Init" Init (optional snapshotParser)   addCommand "package-db" packageDbDesc (const PackageDb) (pure ())@@ -104,7 +110,12 @@   addCommand "unregister" unregisterDesc Unregister packageParser   addCommand "delete" deleteDesc Delete (optional snapshotParser)   addCommand "upgrade" upgradeDesc Upgrade (optional snapshotParser)+  addCommand "print" printDesc Print printOptParser +printOptParser :: Parser PrintOpt+printOptParser = flag PrintShort PrintFull $+  long "full-path"+ cabalSandboxInit :: FilePath -> IO () cabalSandboxInit dir = do   let dirText = T.pack dir@@ -479,6 +490,20 @@   <?> "versionParser" -} +sandboxPrint :: PrintOpt -> IO ()+sandboxPrint printOpt = do+  packageDbText <- getPackageDb+  let path = takeDirectory  $ dropTrailingPathSeparator $ T.unpack packageDbText+  case printOpt of+    PrintFull -> putStrLn path+    PrintShort -> do+      let sandbox = takeFileName path+          preSandbox = takeDirectory path+      sandboxPrefix <- getSandboxPrefix+      if preSandbox == dropTrailingPathSeparator (T.unpack sandboxPrefix)+        then putStrLn sandbox+        else putStrLn path+ handleSandboxExceptions :: SandboxException -> IO () handleSandboxExceptions NoHomeEnvironmentVariable = do   hPutStrLn stderr "Couldn't find the HOME environment variable"@@ -549,5 +574,6 @@           Just snapshot -> sandboxDeleteSnapshot snapshot           Nothing -> sandboxDelete         Upgrade mSnapshot -> sandboxUpgrade mSnapshot+        Print printOpt -> sandboxPrint printOpt   go `catch` handleSandboxExceptions      `catch` handlePluginExceptions
stackage-sandbox.cabal view
@@ -1,5 +1,5 @@ name:                stackage-sandbox-version:             0.1.2+version:             0.1.3 synopsis:   Work with shared stackage sandboxes description:@@ -26,6 +26,7 @@  library   hs-source-dirs:      src+  ghc-options:         -Wall -O2   exposed-modules:       Stackage.CLI.Sandbox   build-depends:@@ -36,6 +37,7 @@ executable stackage-sandbox   hs-source-dirs:      main   main-is:             Sandbox.hs+  ghc-options:         -Wall -O2   build-depends:       base >=4.7 && <5     , text