Drops dot, adds none; renames pony to unicorn
authorMoritz Angermann <moritz.angermann@gmail.com>
Fri, 15 Jan 2016 07:22:17 +0000 (15:22 +0800)
committerMoritz Angermann <moritz.angermann@gmail.com>
Fri, 15 Jan 2016 07:22:17 +0000 (15:22 +0800)
shaking-up-ghc.cabal
src/Base.hs
src/Main.hs
src/Oracles/Config/CmdLineFlag.hs

index 123870d..b38feac 100644 (file)
@@ -116,7 +116,6 @@ executable ghc-shake
                        , ScopedTypeVariables
     build-depends:       base
                        , ansi-terminal >= 0.6
-                       , bytestring >= 0.10.6
                        , Cabal >= 1.22
                        , containers >= 0.5
                        , directory >= 1.2
@@ -126,6 +125,5 @@ executable ghc-shake
                        , shake >= 0.15
                        , transformers >= 0.4
                        , unordered-containers >= 0.2
-                       , utf8-string >= 1.0.1
     default-language:    Haskell2010
     ghc-options:         -Wall -fno-warn-name-shadowing -rtsopts -with-rtsopts=-I0 -j
index b9c7f72..07b21e4 100644 (file)
@@ -115,16 +115,11 @@ a -/- b = unifyPath $ a </> b
 
 infixr 6 -/-
 
--- | A wrapper around shakes @putNormal@ that substitutes
--- any message for a fullstop if @buildInfo@ is @Dot@.
-putNormal' :: String -> Action ()
-putNormal' = if buildInfo == Dot then putNormal . const "." else putNormal
-
 -- | A more colourful version of Shake's putNormal
 putColoured :: Color -> String -> Action ()
 putColoured colour msg = do
     liftIO $ setSGR [SetColor Foreground Vivid colour]
-    putNormal' msg
+    putNormal msg
     liftIO $ setSGR []
     liftIO $ hFlush stdout
 
@@ -134,7 +129,9 @@ putOracle = putColoured Blue
 
 -- | Make build output more distinguishable
 putBuild :: String -> Action ()
-putBuild = putColoured White
+putBuild = if buildInfo /= None
+    then putColoured White
+    else const (pure ())
 
 -- | A more colourful version of success message
 putSuccess :: String -> Action ()
@@ -149,14 +146,14 @@ putError msg = do
 -- | Render an action.
 renderAction :: String -> String -> String -> String
 renderAction what input output = case buildInfo of
-    Normal -> renderBox [ what
-                        , "     input:" ++ input
-                        , " => output:" ++ output ]
-    Brief  -> "> " ++ what ++ ": " ++ input ++ " => " ++ output
-    Pony   -> renderPony [ what
+    Normal  -> renderBox [ what
                          , "     input:" ++ input
                          , " => output:" ++ output ]
-    Dot    -> "."
+    Brief   -> "> " ++ what ++ ": " ++ input ++ " => " ++ output
+    Unicorn -> renderPony [ what
+                          , "     input:" ++ input
+                          , " => output:" ++ output ]
+    None    -> ""
 
 -- | Render the successful build of a program
 renderProgram :: String -> String -> String -> String
index 14f3554..e9d1e56 100644 (file)
@@ -14,10 +14,6 @@ import qualified Rules.Perl
 import qualified Test
 import Oracles.Config.CmdLineFlag (putOptions, flags)
 
-import qualified Data.ByteString.Char8 as BS
-import qualified Data.ByteString.UTF8 as UTF8
-import Data.Char (chr)
-
 main :: IO ()
 main = shakeArgsWith options flags $ \cmdLineFlags targets -> do
     putOptions cmdLineFlags
@@ -41,27 +37,4 @@ main = shakeArgsWith options flags $ \cmdLineFlags targets -> do
         { shakeFiles    = Base.shakeFilesPath
         , shakeProgress = progressSimple
         , shakeTimings  = True
-        , shakeOutput   = const putMsg
         }
-
--- | Dynamic switch for @putStr@ and @putStrLn@ depending on the @msg@.
-putMsg :: String -> IO ()
-putMsg msg | dropEscSequence msg == "." = BS.putStr . UTF8.fromString $ msg
-putMsg msg                              = BS.putStrLn . UTF8.fromString $ msg
-
--- | Drops ANSI Escape sequences from a string.
-dropEscSequence :: String -> String
-dropEscSequence = go
-  where
-    esc :: Char
-    esc = Data.Char.chr 27
-    go :: String -> String
-    go []     = []
-    go [x]    = [x]
-    go (x:xs) | x == esc  = skip xs
-    go (x:xs) | otherwise = x:go xs
-    skip :: String -> String
-    skip []    = []
-    skip ['m'] = []
-    skip ('m':xs) = go xs
-    skip (_  :xs) = skip xs
index 47dbbbc..4b97c72 100644 (file)
@@ -8,7 +8,7 @@ import Data.IORef
 
 -- Flags
 
-data BuildInfoFlag = Normal | Brief | Pony | Dot deriving (Eq, Show)
+data BuildInfoFlag = None | Brief | Normal | Unicorn deriving (Eq, Show)
 
 data CmdLineOptions = CmdLineOptions {
     flagBuildInfo :: BuildInfoFlag
@@ -25,16 +25,16 @@ readBuildInfoFlag ms =
         (go =<< fmap (map toLower) ms)
   where
     go :: String -> Maybe BuildInfoFlag
-    go "normal" = Just Normal
-    go "brief"  = Just Brief
-    go "pony"   = Just Pony
-    go "dot"    = Just Dot
-    go _        = Nothing -- Left "no parse"
+    go "none"    = Just None
+    go "brief"   = Just Brief
+    go "normal"  = Just Normal
+    go "unicorn" = Just Unicorn
+    go _         = Nothing -- Left "no parse"
     mkClosure :: BuildInfoFlag -> CmdLineOptions -> CmdLineOptions
     mkClosure flag opts = opts { flagBuildInfo = flag }
 
 flags :: [OptDescr (Either String (CmdLineOptions -> CmdLineOptions))]
-flags = [Option [] ["build-info"] (OptArg readBuildInfoFlag "") "Build Info Style (Normal, Brief, Pony, Dot, or None)"]
+flags = [Option [] ["progress-info"] (OptArg readBuildInfoFlag "") "Build Info Style (None, Brief, Normal, or Unicorn)"]
 
 -- IO -- We use IO here instead of Oracles, as Oracles form part of shakes cache
 -- hence, changing command line arguments, would cause a full rebuild.  And we