gitHUD 1.3.0 → 1.3.1
raw patch · 8 files changed
+38/−20 lines, 8 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- GitHUD.Terminal.Base: terminalEndCode :: String
+ GitHUD.Terminal.Base: endColorMarker :: Shell -> String
+ GitHUD.Terminal.Prompt: resetPromptAtBeginning :: ShellOutput
+ GitHUD.Terminal.Types: NoColor :: Color
Files
- gitHUD.cabal +1/−1
- src/GitHUD/Config/Parse.hs +2/−1
- src/GitHUD/Config/Types.hs +2/−2
- src/GitHUD/Terminal/Base.hs +2/−1
- src/GitHUD/Terminal/Prompt.hs +7/−0
- src/GitHUD/Terminal/Types.hs +1/−1
- test/Test/GitHUD/Config/Parse.hs +2/−2
- test/Test/GitHUD/Terminal/Prompt.hs +21/−12
gitHUD.cabal view
@@ -1,5 +1,5 @@ name: gitHUD-version: 1.3.0+version: 1.3.1 synopsis: More efficient replacement to the great git-radar description: Please see README.md homepage: http://github.com/gbataille/gitHUD#readme
src/GitHUD/Config/Parse.hs view
@@ -206,7 +206,7 @@ colorConfigToColor :: String -> Color colorConfigToColor str = either- (const Blue)+ (const NoColor) id (parse colorParser "" str) @@ -220,6 +220,7 @@ , string "Magenta" >> return Magenta , string "Cyan" >> return Cyan , string "White" >> return White+ , string "NoColor" >> return NoColor ] <?> "color" intensityConfigToIntensity :: String -> ColorIntensity
src/GitHUD/Config/Types.hs view
@@ -101,7 +101,7 @@ , confLocalBranchNamePrefix = "[" , confLocalBranchNameSuffix = "]" , confLocalDetachedPrefix = "detached@"- , confLocalBranchColor = Blue+ , confLocalBranchColor = NoColor , confLocalBranchIntensity = Vivid , confLocalDetachedColor = Yellow , confLocalDetachedIntensity = Vivid@@ -112,7 +112,7 @@ , confLocalCommitsPullSuffix = "\8595" , confLocalCommitsPullSuffixColor = Red , confLocalCommitsPullSuffixIntensity = Vivid- , confLocalCommitsPushPullInfix = "\8645"+ , confLocalCommitsPushPullInfix = "⥯" , confLocalCommitsPushPullInfixColor = Green , confLocalCommitsPushPullInfixIntensity = Vivid
src/GitHUD/Terminal/Base.hs view
@@ -1,8 +1,8 @@ module GitHUD.Terminal.Base ( tellStringInColor , applyShellMarkers- , terminalEndCode , terminalStartCode+ , endColorMarker ) where import Control.Monad.Writer (tell)@@ -62,6 +62,7 @@ terminalStartCode Magenta Dull = "\x1b[35m" terminalStartCode Cyan Dull = "\x1b[36m" terminalStartCode White Dull = "\x1b[37m"+terminalStartCode NoColor _ = terminalEndCode terminalEndCode :: String terminalEndCode = "\x1b[0m"
src/GitHUD/Terminal/Prompt.hs view
@@ -1,5 +1,6 @@ module GitHUD.Terminal.Prompt ( buildPromptWithConfig+ , resetPromptAtBeginning , addGitRepoIndicator , addNoTrackedUpstreamIndicator , addMergeBranchCommits@@ -10,6 +11,7 @@ , buildPrompt ) where +import Control.Applicative ((<$>)) import Control.Monad (when) import Control.Monad.Writer (runWriterT, tell) @@ -29,6 +31,7 @@ buildPrompt :: ShellOutput buildPrompt = do config <- askConfig+ resetPromptAtBeginning when (confShowPartRepoIndicator config) $ addGitRepoIndicator when (confShowPartMergeBranchCommitsDiff config) $ addNoTrackedUpstreamIndicator when (confShowPartMergeBranchCommitsDiff config) $ addMergeBranchCommits@@ -37,6 +40,10 @@ when (confShowPartLocalChangesState config) $ addRepoState when (confShowPartStashes config) $ addStashes return ()++resetPromptAtBeginning :: ShellOutput+resetPromptAtBeginning =+ (endColorMarker <$> askShell) >>= tell addGitRepoIndicator :: ShellOutput addGitRepoIndicator = do
src/GitHUD/Terminal/Types.hs view
@@ -4,6 +4,6 @@ , Shell(..) ) where -data Color = Black | Red | Green | Yellow | Blue | Magenta | Cyan | White deriving (Eq, Show, Read)+data Color = Black | Red | Green | Yellow | Blue | Magenta | Cyan | White | NoColor deriving (Eq, Show, Read) data ColorIntensity = Dull | Vivid deriving (Eq, Show, Read) data Shell = ZSH | Other deriving (Eq, Show)
test/Test/GitHUD/Config/Parse.hs view
@@ -138,7 +138,7 @@ withValue "Black" , testCase "Key: no_tracked_upstream_indicator_color - invalid color" $- expectValue Blue $+ expectValue NoColor $ toBeInField confNoTrackedUpstreamIndicatorColor $ forConfigItemKey "no_tracked_upstream_indicator_color" $ withValue "FOO"@@ -473,5 +473,5 @@ colorConfigToColor "Cyan" @?= Cyan , testCase "invalid color - default to Blue" $- colorConfigToColor "Foo" @?= Blue+ colorConfigToColor "Foo" @?= NoColor ]
test/Test/GitHUD/Terminal/Prompt.hs view
@@ -16,7 +16,8 @@ terminalPromptTests :: TestTree terminalPromptTests = testGroup "Terminal Prompt Test"- [ testAddGitRepoIndicator+ [ testResetPromptAtBeginning+ , testAddGitRepoIndicator , testAddNoTrackedUpstreamIndicator , testAddMergeBranchCommits , testAddLocalBranchName@@ -26,6 +27,14 @@ , testPartialPrompt ] +testResetPromptAtBeginning :: TestTree+testResetPromptAtBeginning = testGroup "#resetPromptAtBeginning"+ [ testCase "Should start the prompt with a reset color control sequence" $+ testWriterWithConfig (zeroOutputConfig ZSH) resetPromptAtBeginning @?= "%{\x1b[0m%}"+ , testCase "Should start the prompt with a reset color control sequence" $+ testWriterWithConfig (zeroOutputConfig Other) resetPromptAtBeginning @?= "\x1b[0m"+ ]+ testAddGitRepoIndicator :: TestTree testAddGitRepoIndicator = testGroup "#addGitRepoIndicator" [ testGroup "Default Config"@@ -193,13 +202,13 @@ testWriterWithConfig (buildOutputConfig ZSH (zeroGitRepoState { gitLocalBranch = "foo" }) defaultConfig) addLocalBranchName- @?= "[%{\x1b[1;34m%}foo%{\x1b[0m%}] "+ @?= "[%{\x1b[0m%}foo%{\x1b[0m%}] " , testCase "Other: should display the name of the current branch if we are at the HEAD of any" $ testWriterWithConfig (buildOutputConfig Other (zeroGitRepoState { gitLocalBranch = "foo" }) defaultConfig) addLocalBranchName- @?= "[\x1b[1;34mfoo\x1b[0m] "+ @?= "[\x1b[0mfoo\x1b[0m] " , testCase "ZSH: should display the current commit SHA if we are not on a branch's HEAD" $ testWriterWithConfig@@ -266,7 +275,7 @@ , testCase "ZSH: commits to pull and to push" $ testCommitsToPushAndPull ZSH defaultConfig @?=- "4%{\x1b[1;32m%}\8645%{\x1b[0m%}4 "+ "4%{\x1b[1;32m%}⥯%{\x1b[0m%}4 " , testCase "Other: commits to pull" $ testCommitsToPull Other defaultConfig @?=@@ -278,7 +287,7 @@ , testCase "Other: commits to pull and to push" $ testCommitsToPushAndPull Other defaultConfig @?=- "4\x1b[1;32m\8645\x1b[0m4 "+ "4\x1b[1;32m⥯\x1b[0m4 " ] , testGroup "Custom Config" [ testCase "ZSH: commits to pull" $@@ -510,7 +519,7 @@ {- For reference here, the full prompt would be - "\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[1;34m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}\8645%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ "\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} " -} testPartialPrompt :: TestTree@@ -519,37 +528,37 @@ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartRepoIndicator = False }) buildPrompt- @?= "\120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[1;34m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}\8645%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ @?= "%{\ESC[0m%}\120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} " , testCase "w/out merge branch commits info" $ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartMergeBranchCommitsDiff = False }) buildPrompt- @?= "\5812 [%{\ESC[1;34m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}\8645%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ @?= "%{\ESC[0m%}\5812 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} " , testCase "w/out local branch info" $ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartLocalBranch = False }) buildPrompt- @?= "\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 5%{\ESC[1;32m%}\8645%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ @?= "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} " , testCase "w/out commits push/pull info" $ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartCommitsToOrigin = False }) buildPrompt- @?= "\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[1;34m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ @?= "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} 3%{\ESC[1;32m%}\8801%{\ESC[0m%} " , testCase "w/out local repo changes" $ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartLocalChangesState = False }) buildPrompt- @?= "\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[1;34m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}\8645%{\ESC[0m%}6 3%{\ESC[1;32m%}\8801%{\ESC[0m%} "+ @?= "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 3%{\ESC[1;32m%}\8801%{\ESC[0m%} " , testCase "w/out stashes" $ testWriterWithConfig (buildOutputConfig ZSH repoStateForPartialPrompt defaultConfig { confShowPartStashes = False }) buildPrompt- @?= "\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[1;34m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}\8645%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} "+ @?= "%{\ESC[0m%}\5812 \120366 2%{\ESC[1;32m%}\8644%{\ESC[0m%}1 [%{\ESC[0m%}branch%{\ESC[0m%}] 5%{\ESC[1;32m%}⥯%{\ESC[0m%}6 5%{\ESC[1;32m%}A%{\ESC[0m%}6%{\ESC[1;32m%}D%{\ESC[0m%}4%{\ESC[1;32m%}M%{\ESC[0m%}7%{\ESC[1;32m%}R%{\ESC[0m%} 3%{\ESC[1;31m%}D%{\ESC[0m%}1%{\ESC[1;31m%}M%{\ESC[0m%} 2%{\ESC[1;37m%}A%{\ESC[0m%} 8%{\ESC[1;32m%}C%{\ESC[0m%} " ] -- | Utility function to test a ShellOutput function and gets the prompt built