git-annex/Git/HashObject.hs

43 lines
948 B
Haskell
Raw Normal View History

2011-12-12 21:24:55 -04:00
{- git hash-object interface
-
- Copyright 2011-2012 Joey Hess <joey@kitenet.net>
2011-12-12 21:24:55 -04:00
-
- Licensed under the GNU GPL version 3 or higher.
-}
module Git.HashObject where
import Common
import Git
2011-12-14 15:56:11 -04:00
import Git.Command
2011-12-12 21:24:55 -04:00
type HashObjectHandle = (PipeHandle, Handle, Handle)
{- Starts git hash-object and returns a handle. -}
hashObjectStart :: Repo -> IO HashObjectHandle
hashObjectStart repo = do
r@(_, _, toh) <- hPipeBoth "git" $
toCommand $ gitCommandLine params repo
2012-02-04 12:58:42 -04:00
fileEncoding toh
return r
2011-12-12 21:24:55 -04:00
where
params =
[ Param "hash-object"
, Param "-w"
, Param "--stdin-paths"
]
{- Stops git hash-object. -}
hashObjectStop :: HashObjectHandle -> IO ()
hashObjectStop (pid, from, to) = do
hClose to
hClose from
forceSuccess pid
{- Injects a file into git, returning the shas of the objects. -}
hashFile :: HashObjectHandle -> FilePath -> IO Sha
hashFile (_, from, to) file = do
hPutStrLn to file
hFlush to
Ref <$> hGetLine from