new git config read method
This commit is contained in:
parent
e4bc7e599a
commit
31b24348d2
1 changed files with 11 additions and 3 deletions
14
GitRepo.hs
14
GitRepo.hs
|
@ -22,9 +22,11 @@ module GitRepo (
|
||||||
import Directory
|
import Directory
|
||||||
import System
|
import System
|
||||||
import System.Directory
|
import System.Directory
|
||||||
|
import System.Posix.Directory
|
||||||
import System.Path
|
import System.Path
|
||||||
import System.Cmd.Utils
|
import System.Cmd.Utils
|
||||||
import System.IO
|
import System.IO
|
||||||
|
import IO (bracket_)
|
||||||
import System.Posix.Process
|
import System.Posix.Process
|
||||||
import Data.String.Utils
|
import Data.String.Utils
|
||||||
import Data.Map as Map hiding (map, split)
|
import Data.Map as Map hiding (map, split)
|
||||||
|
@ -151,11 +153,17 @@ gitPipeRead repo params = assertlocal repo $ do
|
||||||
ret <- hGetContentsStrict h
|
ret <- hGetContentsStrict h
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
{- Runs git config and populates a repo with its settings. -}
|
{- Runs git config and populates a repo with its config. -}
|
||||||
gitConfigRead :: GitRepo -> IO GitRepo
|
gitConfigRead :: GitRepo -> IO GitRepo
|
||||||
gitConfigRead repo = assertlocal repo $ do
|
gitConfigRead repo = assertlocal repo $ do
|
||||||
c <- gitPipeRead repo ["config", "--list"]
|
{- Cannot use gitPipeRead because it relies on the config having
|
||||||
return repo { config = gitConfigParse c }
|
been already read. Instead, chdir to the repo. -}
|
||||||
|
cwd <- getCurrentDirectory
|
||||||
|
bracket_ (changeWorkingDirectory (top repo))
|
||||||
|
(\_ -> changeWorkingDirectory cwd) $ do
|
||||||
|
pOpen ReadFromPipe "git" ["config", "--list"] $ \h -> do
|
||||||
|
val <- hGetContentsStrict h
|
||||||
|
return repo { config = gitConfigParse val }
|
||||||
|
|
||||||
{- Parses git config --list output into a config map. -}
|
{- Parses git config --list output into a config map. -}
|
||||||
gitConfigParse :: String -> Map.Map String String
|
gitConfigParse :: String -> Map.Map String String
|
||||||
|
|
Loading…
Add table
Reference in a new issue