35 lines
819 B
Haskell
35 lines
819 B
Haskell
|
{- git-annex program path
|
||
|
-
|
||
|
- Copyright 2013 Joey Hess <joey@kitenet.net>
|
||
|
-
|
||
|
- Licensed under the GNU GPL version 3 or higher.
|
||
|
-}
|
||
|
|
||
|
{-# LANGUAGE CPP #-}
|
||
|
|
||
|
module Annex.Path where
|
||
|
|
||
|
import Common
|
||
|
import Config.Files
|
||
|
import System.Environment
|
||
|
|
||
|
{- A fully qualified path to the currently running git-annex program.
|
||
|
-
|
||
|
- getExecutablePath is available since ghc 7.4.2. On OSs it supports
|
||
|
- well, it returns the complete path to the program. But, on other OSs,
|
||
|
- it might return just the basename.
|
||
|
-}
|
||
|
programPath :: IO (Maybe FilePath)
|
||
|
programPath = do
|
||
|
#if MIN_VERSION_base(4,6,0)
|
||
|
exe <- getExecutablePath
|
||
|
p <- if isAbsolute exe
|
||
|
then return exe
|
||
|
else readProgramFile
|
||
|
#else
|
||
|
p <- readProgramFile
|
||
|
#endif
|
||
|
-- In case readProgramFile returned just the command name,
|
||
|
-- fall back to finding it in PATH.
|
||
|
searchPath p
|