-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Provides the SHA1 hash of the program executable -- -- See README.md @package executable-hash @version 0.2.0.1 -- | Internals related to reading and writing an injected executable hash. module System.Executable.Hash.Internal -- | This generates an expression which yields the injected SHA1 hash. -- -- The generated expression yields a Just value when the injected -- SHA1 hash is present in the executable. This hash is usually injected -- due to a usage of injectExecutableHash / -- maybeInjectExecutableHash. injectedExecutableHash :: Q Exp -- | Given the path to an executable, computes its hash and injects it into -- the binary, such that when that program demands the value of -- injectedExecutableHash, it yields a Just value. -- -- See the documentation in System.Executable.Hash for an example -- of how to use this with a cabal postBuild hook injectExecutableHash :: FilePath -> IO () -- | Injects an executable hash into the specified binary. If it doesn't -- exist, then this prints a message to stdout indicating that it failed -- to inject the hash. maybeInjectExecutableHash :: FilePath -> IO () -- | This module provides functions for accessing or computing a SHA1 hash -- of the program's executable. Most users are expected to use the -- executableHash function. -- -- To inject the hash into the executable, you can use the -- inject-executable-hash program installed along with this -- package. Alternatively, to do this automatically with cabal, place -- this in your Setup.hs: -- --
--   import Distribution.Simple (defaultMainWithHooks, simpleUserHooks, postBuild)
--   import Distribution.Simple.LocalBuildInfo (buildDir)
--   import System.Executable.Hash.Internal (maybeInjectExecutableHash)
--   import System.FilePath ((/))
--   
--   main :: IO ()
--   main = defaultMainWithHooks $ simpleUserHooks
--       { postBuild = _ _ _ buildInfo ->
--           maybeInjectExecutableHash (buildDir buildInfo / "exeName/exeName")
--       }
--   
-- -- (Note: you'll need to change the executable path) module System.Executable.Hash -- | This generates an expression which yields a SHA1 hash. The generated -- expression has the type IO (Maybe ByteString), just like -- computeExecutableHash. -- -- If a SHA1 hash of the executable has been injected into it, then it's -- directly yielded by this expression. Otherwise, a hash is computed -- with computeExecutableHash. -- -- Note that you shouldn't rely on the result being the actual SHA1 hash -- of the executable, because injecting the hash modifies the binary, and -- so changes the result of computeExecutableHash. Instead, this -- should only be used as a way to uniquely identify the contents of the -- executable. -- -- This yields Nothing when run with runhaskell or -- ghci. executableHash :: Q Exp -- | Computes the SHA1 hash of the program executable. -- -- This yields Nothing when run with runhaskell or -- ghci. computeExecutableHash :: IO (Maybe ByteString)