packages feed

stack-run-auto 0.1.1.1 → 0.1.1.2

raw patch · 4 files changed

+40/−12 lines, 4 files

Files

app/Main.hs view
@@ -2,10 +2,29 @@  import           StackRunAuto import           System.Environment (getArgs)+import           System.IO  main :: IO () main = do     args <- getArgs-    case args of+    hSetBuffering stdout LineBuffering+    hSetBuffering stderr LineBuffering++    let (extras, args') = getExtras args++    case args' of         [] -> error "Usage: stack-run-auto <file>"-        (fname:_) -> run (Options fname)+        ("--help":_) -> hPutStrLn stderr usage+        (fname:_) -> run (Options fname extras)+  where+    usage = unlines [ "Usage: stack-run-auto [--extra <pkg>...] <file>"+                    , ""+                    , "    --extra <pkg>   Adds an extra package that couldn't be resolved"+                    , ""+                    ]++getExtras :: [String] -> ([String], [String])+getExtras args = go ([], args)+  where+    go (extras, "--extra":pkg:args') = go (pkg:extras, args')+    go i = i
app/ModulePackage.hs view
@@ -1,11 +1,15 @@ module Main where  import           Control.Concurrent.Async-import           Control.Monad            (void, (>=>))+import           Control.Monad            (forM_)+import           Data.Maybe               (catMaybes) import           StackRunAuto import           System.Environment+import           System.IO  main :: IO () main = do     args <- getArgs-    void $ mapConcurrently (modulePackage >=> putStrLn) args+    hSetBuffering stdout LineBuffering+    pkgs <- mapConcurrently modulePackage args+    forM_ (catMaybes pkgs) putStrLn
src/StackRunAuto.hs view
@@ -4,9 +4,9 @@  import           Control.Concurrent.Async import           Control.Lens-import           Control.Monad                   (forM_, void) import           Data.Aeson.Lens import           Data.List.Utils                 (uniq)+import           Data.Maybe                      (catMaybes) import           Data.Monoid import           Data.String.Utils import qualified Data.Text                       as Text (pack, unpack)@@ -16,19 +16,21 @@ import           Network.Wreq                    (defaults, getWith, param,                                                   responseBody) import           System.Exit+import           System.IO                       (hPutStrLn, stderr) import           System.Process-import           System.IO (hPutStrLn, stderr)  data Options = Options { optsFileName :: FilePath+                       , optsExtras   :: [String]                        }  run :: Options -> IO () run Options{..} = do     modules <- fileModulesVerbose optsFileName-    packages <- mapConcurrently modulePackageVerbose modules+    packages <- catMaybes <$> mapConcurrently modulePackageVerbose modules     allPackages <- mapConcurrently extractDependenciesVerbose (uniq packages)     let argList = map ("--package " ++)-                  (filter isValidPackage (uniq (packages ++ concat allPackages)))+                  (filter isValidPackage+                   (uniq (packages ++ concat allPackages ++ optsExtras)))         cmd = "stack runghc " ++ optsFileName ++ " " ++ join " " argList     putStrLn cmd     ph <- runCommand cmd@@ -56,12 +58,15 @@     putStrLn $ "Finding dependencies for " ++ pkg ++ "..."     extractDependencies pkg -modulePackageVerbose :: String -> IO String+modulePackageVerbose :: String -> IO (Maybe String)+modulePackageVerbose "" = do+    putStrLn "Skipping parse error (empty string)..."+    return Nothing modulePackageVerbose m = timed ("---> Found package for " ++ m) $ do     putStrLn $ "Finding package for " ++ m ++ "..."     modulePackage m -modulePackage :: String -> IO String+modulePackage :: String -> IO (Maybe String) modulePackage m = do     let url = "http://hayoo.fh-wedel.de/json"         opts = defaults & param "query" .~ ["module:" <> Text.pack m]@@ -78,6 +83,6 @@                 else error $ "Couldn't resolve package for " ++ m         (p:_) -> do             let pkg = Text.unpack (p ^. key "resultPackage" . _String)-            return pkg+            return (Just pkg)   where     isModuleResult r = r ^. key "resultType" . _String == "module"
stack-run-auto.cabal view
@@ -1,5 +1,5 @@ name:                stack-run-auto-version:             0.1.1.1+version:             0.1.1.2 synopsis:            Initial project template from stack description:         Please see README.md homepage:            http://github.com/yamadapc/stack-run-auto#readme