Skip to content

Commit 89ce0f3

Browse files
fixing the use of colours with emerge
1 parent 98d48b6 commit 89ce0f3

File tree

2 files changed

+20
-30
lines changed

2 files changed

+20
-30
lines changed

src/GHRB/Core.hs

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ module GHRB.Core
2424
, updateInstalled
2525
) where
2626

27-
import Control.Applicative (many, optional, (<|>))
27+
import Control.Applicative (many, optional, some, (<|>))
2828
import Control.Monad (void)
2929
import qualified Data.ByteString as BS (ByteString)
3030
import qualified Data.ByteString.Char8 as BS (pack)
@@ -42,10 +42,10 @@ import Distribution.Portage.Types (Category (Category),
4242
getVersion, unwrapCategory,
4343
unwrapPkgName)
4444
import FlatParse.Basic (Parser, Result (OK), char, eof,
45-
runParser, satisfy, string) --, anyChar
45+
runParser, satisfy, string)
4646
import GHRB.Core.Types (PackageSet, St (St), completed,
47-
downgrade, failed,
48-
tried, unresolved, untried, installed)
47+
downgrade, failed, installed,
48+
tried, unresolved, untried)
4949

5050
buildEmptyState :: St
5151
buildEmptyState = St mempty mempty mempty mempty mempty mempty mempty undefined
@@ -59,24 +59,14 @@ parsePackageList packageList =
5959
parsePackages :: Parser Void PackageSet
6060
parsePackages = parsePackage <|> (eof >> return mempty)
6161

62-
-- stripANSI :: (Char -> Bool) -> Parser Void String
63-
-- stripANSI terminator = parseANSI terminator <|> (satisfy terminator >> pure "") <|> parseChar terminator
64-
--
65-
-- parseChar :: (Char -> Bool) -> Parser Void String
66-
-- parseChar terminator = anyChar >>= \c -> (c :) <$> stripANSI terminator
67-
--
68-
-- parseANSI :: (Char -> Bool) -> Parser Void String
69-
-- parseANSI terminator = do
70-
-- $(string "\\[ESC")
71-
-- void $ many (satisfy (/= 'm'))
72-
-- $(char 'm')
73-
-- stripANSI terminator
74-
--
62+
parseANSI :: Parser Void ()
63+
parseANSI = $(string "\ESC[") >> many (satisfy (/= 'm')) >> $(char 'm')
64+
7565
parsePackage :: Parser Void PackageSet
7666
parsePackage = do
7767
category <- many (satisfy (/= '/'))
7868
$(char '/')
79-
name <- many (satisfy (/= '\n'))
69+
name <- many (satisfy (/= '\n'))
8070
void . optional $ $(char '\n')
8171
Set.insert
8272
Package
@@ -93,10 +83,12 @@ parseDowngrades = runParser parseDowngradeByLine
9383

9484
parseDowngradeByLine :: Parser Void Bool
9585
parseDowngradeByLine =
96-
($(string "[ebuild")
97-
>> satisfy (`notElem` "^\\[]D")
86+
($(char '[')
87+
>> some parseANSI
88+
>> $(string "ebuild")
89+
>> many (parseANSI <|> void (satisfy (`notElem` "D[]")))
9890
>> $(char 'D')
99-
>> satisfy (`notElem` "^\\[]")
91+
>> many (parseANSI <|> void (satisfy (`notElem` "[]\n")))
10092
>> $(char ']')
10193
>> pure True)
10294
<|> (many (satisfy (/= '\n')) >> $(char '\n') >> parseDowngradeByLine)
@@ -123,16 +115,13 @@ getUntried packages st = st {untried = packages'}
123115
packages' = filter (\p -> not (p `Set.member` tried st)) packages
124116

125117
failedResolve :: UTCTime -> Package -> St -> St
126-
failedResolve t p st =
127-
st {unresolved = Set.insert (t, p) . unresolved $ st}
118+
failedResolve t p st = st {unresolved = Set.insert (t, p) . unresolved $ st}
128119

129120
hasDowngraded :: UTCTime -> Package -> St -> St
130-
hasDowngraded t p st =
131-
st {downgrade = Set.insert (t, p) . downgrade $ st}
121+
hasDowngraded t p st = st {downgrade = Set.insert (t, p) . downgrade $ st}
132122

133123
hasCompleted :: UTCTime -> Package -> St -> St
134-
hasCompleted t p st =
135-
st {completed = Set.insert (t, p) . completed $ st}
124+
hasCompleted t p st = st {completed = Set.insert (t, p) . completed $ st}
136125

137126
hasFailed :: UTCTime -> Package -> St -> St
138127
hasFailed t p st = st {failed = Set.insert (t, p) . failed $ st}
@@ -144,4 +133,5 @@ updateInstalled :: UTCTime -> [Package] -> PackageSet -> St -> St
144133
updateInstalled time ps inst st = st'
145134
where
146135
(comp, untried') = partition (`Set.member` inst) ps
147-
st' = foldr (hasCompleted time) st {untried = untried', installed=inst} comp
136+
st' =
137+
foldr (hasCompleted time) st {untried = untried', installed = inst} comp

src/GHRB/IO.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,8 +263,8 @@ capturePortageOutput ::
263263
capturePortageOutput pkg = do
264264
emerge <- asks getEmerge
265265
stderr
266-
(emerge ++ " " ++ unwords defaultEmergeArgs ++ " " ++ "--pretend --color=n")
267-
(exitCode, stdOut, stdErr) <- runEmerge ["--pretend", "--color=n"] pkg
266+
(emerge ++ " " ++ unwords defaultEmergeArgs ++ " " ++ "--pretend --color=y")
267+
(exitCode, stdOut, stdErr) <- runEmerge ["--pretend", "--color=y"] pkg
268268
let output = stdOut ++ stdErr
269269
stderr ("pretend_return: " ++ output)
270270
pure (exitCode, output)

0 commit comments

Comments
 (0)