iridium 0.1.5.5 → 0.1.5.6
raw patch · 7 files changed
+70/−67 lines, 7 filesdep ~basedep ~processdep ~transformersPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base, process, transformers, turtle
API changes (from Hackage documentation)
- Development.Iridium.ExternalProgWrappers: readShellProcessWithExitCode :: String -> [String] -> IO (ExitCode, String, String)
- Development.Iridium: askGlobalConfirmation :: (MonadIO m, MonadPlus m, MonadMultiReader Config m) => Bool -> m ()
+ Development.Iridium: askGlobalConfirmation :: (MonadIO m, MonadPlus m) => Bool -> m ()
- Development.Iridium: displaySummary :: (MonadIO m, MonadPlus m, MonadMultiState LogState m, MonadMultiState CheckState m, MonadMultiReader Config m, MonadMultiReader Infos m) => m ()
+ Development.Iridium: displaySummary :: (MonadIO m, MonadMultiState LogState m, MonadMultiState CheckState m, MonadMultiReader Config m, MonadMultiReader Infos m) => m ()
- Development.Iridium: runChecks :: (MonadIO m0, MonadPlus m0, MonadBaseControl IO m0, ContainsType LogState s, ContainsType CheckState s, ContainsType Config r, ContainsType Infos r) => MultiRWST r w s m0 ()
+ Development.Iridium: runChecks :: (MonadIO m0, MonadPlus m0, ContainsType LogState s, ContainsType CheckState s, ContainsType Config r, ContainsType Infos r) => MultiRWST r w s m0 ()
- Development.Iridium.Checks: lowerBounds :: (MonadIO m, MonadMultiState LogState m, MonadMultiState CheckState m, MonadMultiReader Config m, MonadMultiReader Infos m) => m ()
+ Development.Iridium.Checks: lowerBounds :: (MonadIO m, MonadMultiState LogState m, MonadMultiState CheckState m, MonadMultiReader Infos m) => m ()
- Development.Iridium.Checks: upperBounds :: (MonadIO m, MonadMultiState LogState m, MonadMultiState CheckState m, MonadMultiReader Config m, MonadMultiReader Infos m) => m ()
+ Development.Iridium.Checks: upperBounds :: (MonadIO m, MonadMultiState LogState m, MonadMultiState CheckState m, MonadMultiReader Infos m) => m ()
- Development.Iridium.Checks: upperBoundsStackage :: (MonadIO m, MonadPlus m, MonadBaseControl IO m, MonadMultiState LogState m, MonadMultiState CheckState m, MonadMultiReader Infos m, MonadMultiReader Config m) => m ()
+ Development.Iridium.Checks: upperBoundsStackage :: (MonadIO m, MonadPlus m, MonadMultiState LogState m, MonadMultiState CheckState m, MonadMultiReader Infos m, MonadMultiReader Config m) => m ()
- Development.Iridium.Hackage: uploadDocs :: (MonadIO m, MonadPlus m, MonadMultiReader Config m, MonadMultiReader Infos m, MonadMultiState LogState m) => m ()
+ Development.Iridium.Hackage: uploadDocs :: (MonadIO m, MonadPlus m, MonadMultiReader Config m, MonadMultiState LogState m) => m ()
Files
- ChangeLog.md +5/−0
- iridium.cabal +10/−8
- src/Development/Iridium.hs +1/−4
- src/Development/Iridium/Checks.hs +1/−6
- src/Development/Iridium/Config.hs +6/−4
- src/Development/Iridium/ExternalProgWrappers.hs +47/−44
- src/Development/Iridium/Hackage.hs +0/−1
ChangeLog.md view
@@ -1,5 +1,10 @@ # Revision history for iridium +## 0.1.5.6 -- 2016-09-28++ * Only internal changes (support ghc-8, fix support for ghc-7.8;+ adapt/switch to turtle-1.3.0)+ ## 0.1.5.5 -- 2016-09-28 * Slight improvements around the handling of testing against multiple
iridium.cabal view
@@ -1,6 +1,6 @@ name: iridium-version: 0.1.5.5-synopsis: Automated Local Testing and Package Uploading+version: 0.1.5.6+synopsis: Automated Local Cabal Package Testing and Uploading license: BSD3 license-file: LICENSE author: Lennart Spitzner@@ -25,6 +25,8 @@ * Checking that the upper bounds of dependencies are up-to-date by making use of stackage snapshots. .+ * [git] Pushing and tagging the version to the commit.+ . * Uploading of both the package itself and the documentation. . The program is configurable using a per-project .yaml file.@@ -69,13 +71,13 @@ -- other-modules: -- other-extensions: build-depends:- { base >=4.7 && <4.9+ { base >=4.7 && <4.10 , lifted-base >=0.2.3.6 && <0.3 , yaml >=0.8.16 && <0.9- , turtle >=1.2.5 && <1.3+ , turtle >=1.3.0 && <1.4 , text >=1.2.2.0 && <1.3 , containers >=0.5.5.1 && <0.6- , transformers >=0.3.0.0 && <0.5+ , transformers >=0.3.0.0 && <0.6 , system-filepath >=0.4.13.4 && <0.5 , unordered-containers >=0.2.5.1 && <0.3 , multistate >=0.7.0.0 && <0.8@@ -86,7 +88,7 @@ , bytestring >=0.10.4.0 && <0.11 , tagged >=0.8.3 && <0.9 , extra >=1.4.3 && <1.5- , process >=1.2.0.0 && < 1.5+ , process >=1.2.3.0 && <1.5 , vector >=0.11.0.0 && <0.12 , ansi-terminal >=0.6.2.3 && <0.7 , transformers-base >=0.4.4 && <0.5@@ -119,9 +121,9 @@ } build-depends: { iridium- , base >=4.7 && <4.9+ , base >=4.7 && <4.10 , yaml >=0.8.16 && <0.9- , transformers >=0.3.0.0 && <0.5+ , transformers >=0.3.0.0 && <0.6 , unordered-containers >=0.2.5.1 && <0.3 , multistate >=0.7.0.0 && <0.8 , extra >=1.4.3 && <1.5
src/Development/Iridium.hs view
@@ -92,7 +92,7 @@ pushLog LogLevelError "Error: Found more than one cabal package file!" mzero pushLog LogLevelInfo $ "Reading cabal package description " ++ encodeString packageFile- content <- Text.unlines `liftM` Turtle.fold (Turtle.input packageFile) Foldl.list+ content <- Turtle.linesToText `liftM` Turtle.fold (Turtle.input packageFile) Foldl.list -- pushLog LogLevelDebug $ Text.unpack content let parseResult = parsePackageDescription $ Text.unpack content case parseResult of@@ -130,7 +130,6 @@ runChecks :: ( MonadIO m0 , MonadPlus m0- , MonadBaseControl IO m0 , ContainsType LogState s , ContainsType CheckState s , ContainsType Config r@@ -155,7 +154,6 @@ displaySummary :: ( MonadIO m- , MonadPlus m , MonadMultiState LogState m , MonadMultiState CheckState m , MonadMultiReader Config m@@ -199,7 +197,6 @@ askGlobalConfirmation :: ( MonadIO m , MonadPlus m- , MonadMultiReader Config m ) => Bool -> m ()
src/Development/Iridium/Checks.hs view
@@ -124,7 +124,7 @@ changelogContentLines <- Turtle.fold (Turtle.input path) Foldl.list currentVersionStr <- liftM showVersion askPackageVersion if any (Text.pack currentVersionStr `Text.isInfixOf`)- changelogContentLines+ (Turtle.lineToText `fmap` changelogContentLines) then return True else do pushLog LogLevelError $ "changelog does not contain " ++ currentVersionStr@@ -134,7 +134,6 @@ :: ( MonadIO m , MonadMultiState LogState m , MonadMultiState CheckState m- , MonadMultiReader Config m , MonadMultiReader Infos m ) => m ()@@ -167,7 +166,6 @@ :: ( MonadIO m , MonadMultiState LogState m , MonadMultiState CheckState m- , MonadMultiReader Config m , MonadMultiReader Infos m ) => m ()@@ -382,7 +380,6 @@ :: forall m . ( MonadIO m , MonadPlus m- , MonadBaseControl IO m , MonadMultiState LogState m , MonadMultiState CheckState m , MonadMultiReader Infos m@@ -457,9 +454,7 @@ fetchCabalConfig :: forall m0 . ( MonadIO m0- , MonadPlus m0 , MonadMultiState LogState m0- , MonadMultiReader Infos m0 ) => String -> m0 ByteString
src/Development/Iridium/Config.hs view
@@ -135,10 +135,12 @@ = error "Null" determineConfFromStuff- :: ( MonadIO m- , MonadMultiState LogState m- )- => m Config+ :: -- ( MonadIO m+ -- , MonadMultiState LogState m+ -- )+ Monad m+ => + m Config determineConfFromStuff = do return $ Yaml.Object $ HM.empty -- TODO
src/Development/Iridium/ExternalProgWrappers.hs view
@@ -8,7 +8,6 @@ , runCommandStdOut , observeCreateProcessWithExitCode , getExternalProgramVersion- , readShellProcessWithExitCode , runCommandSuccessCabal , runCommandSuccessHLint )@@ -51,11 +50,9 @@ import qualified System.Process as Process import qualified Data.Char as Char import Text.Read ( readMaybe )+import Data.Text ( Text ) --- well, no Turtle, apparently.--- no way to retrieve stdout, stderr and exitcode.--- the most generic case, not supported? psshhh.-import System.Process hiding ( cwd )+-- import System.Process hiding ( cwd ) import Data.Maybe ( maybeToList ) @@ -70,14 +67,14 @@ -readShellProcessWithExitCode- :: String- -> [String]- -> IO (ExitCode, String, String)-readShellProcessWithExitCode c ps =- readCreateProcessWithExitCode- (shell $ c ++ " " ++ intercalate " " (fmap show ps))- ""+-- readShellProcessWithExitCode+-- :: String+-- -> [String]+-- -> IO (ExitCode, String, String)+-- readShellProcessWithExitCode c ps =+-- readCreateProcessWithExitCode+-- (shell $ c ++ " " ++ intercalate " " (fmap show ps))+-- "" runCommandSuccess :: ( MonadIO m@@ -107,10 +104,11 @@ replaceStackTop l liftIO $ observeCreateProcessWithExitCode- (shell $ c ++ " " ++ intercalate " " (fmap show ps))+ (Process.shell $ c ++ " " ++ intercalate " " (fmap show ps)) "" handleLine handleLine+ case exitCode of ExitSuccess -> do@@ -150,48 +148,53 @@ runCommandSuccess hlintInvoc ps runCommandStdOut- :: ( MonadIO m- , MonadPlus m- , MonadMultiState LogState m- )+ :: (MonadIO m, MonadPlus m, MonadMultiState LogState m) => String -> [String] -> m String runCommandStdOut c ps = do let infoStr = c ++ " " ++ intercalate " " ps- (exitCode, stdOut, _stdErr) <- liftIO $- readShellProcessWithExitCode c ps+ (exitCode, stdOut, _stdErr) <- liftIO $ Turtle.procStrictWithErr+ (Text.pack c)+ (Text.pack `fmap` ps)+ Control.Applicative.empty case exitCode of ExitFailure _ -> do pushLog LogLevelError $ "Error running command `" ++ infoStr ++ "`." mzero- ExitSuccess -> do- return stdOut+ ExitSuccess -> do+ return (Text.unpack stdOut) getExternalProgramVersion- :: ( MonadIO m- , MonadPlus m- , MonadMultiState LogState m- )- => String- -> m [Int]+ :: (MonadIO m, MonadPlus m, MonadMultiState LogState m) => String -> m [Int] getExternalProgramVersion prog = do let err = do- pushLog LogLevelError $ "Could not determine version of external program " ++ prog+ pushLog LogLevelError+ $ "Could not determine version of external program "+ ++ prog mzero- (exitCode, stdOut, _stdErr) <- liftIO $- readShellProcessWithExitCode prog ["--version"]+ (exitCode, stdOut, _stdErr) <- liftIO $ Turtle.procStrictWithErr+ (Text.pack prog)+ [Text.pack "--version"]+ Control.Applicative.empty case exitCode of- ExitSuccess -> do- case lines stdOut of- (line:_) -> case takeWhile (`elem` ".0123456789")- $ dropWhile (not . Char.isNumber) line of- "" -> err- s -> do- pushLog LogLevelInfoVerbose $ "detected " ++ prog ++ " version " ++ s- case mapM readMaybe $ Split.splitOn "." s of- Just vs -> return vs- Nothing -> err+ ExitSuccess -> do+ case lines (Text.unpack stdOut) of+ (line:_) ->+ case+ takeWhile (`elem`".0123456789")+ $ dropWhile (not . Char.isNumber) line+ of+ "" -> err+ s -> do+ pushLog LogLevelInfoVerbose+ $ "detected "+ ++ prog+ ++ " version "+ ++ s+ case mapM readMaybe $ Split.splitOn "." s of+ Just vs -> return vs+ Nothing -> err _ -> err ExitFailure _ -> err @@ -232,7 +235,7 @@ -- hClose errh -- wait on the process- ex <- waitForProcess ph+ ex <- Process.waitForProcess ph return ex @@ -264,7 +267,7 @@ -> IO () cleanupProcess (mb_stdin, mb_stdout, mb_stderr, ph@(ProcessHandle _ delegating_ctlc)) = do- terminateProcess ph+ Process.terminateProcess ph -- Note, it's important that other threads that might be reading/writing -- these handles also get killed off, since otherwise they might be holding -- the handle lock and prevent us from closing, leading to deadlock.@@ -281,7 +284,7 @@ -- waitForProcess (which would otherwise end the Ctl-C delegation itself). when delegating_ctlc stopDelegateControlC- _ <- forkIO (waitForProcess (resetCtlcDelegation ph) >> return ())+ _ <- forkIO (Process.waitForProcess (resetCtlcDelegation ph) >> return ()) return () where resetCtlcDelegation (ProcessHandle m _) = ProcessHandle m False
src/Development/Iridium/Hackage.hs view
@@ -130,7 +130,6 @@ . ( MonadIO m , MonadPlus m , MonadMultiReader Config m- , MonadMultiReader Infos m , MonadMultiState LogState m ) => m ()