make programPath return FilePath not Maybe FilePath
Looking at the few current callers, it's ok to have programPath throw an exception, in the unusual case where it cannot find git-annex.
This commit is contained in:
parent
ad1f4a7f1c
commit
b9275b65f9
4 changed files with 17 additions and 20 deletions
|
@ -17,9 +17,10 @@ import System.Environment
|
|||
-
|
||||
- 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.
|
||||
- it might return just the basename. Fall back to reading the programFile,
|
||||
- or searching for the command name in PATH.
|
||||
-}
|
||||
programPath :: IO (Maybe FilePath)
|
||||
programPath :: IO FilePath
|
||||
programPath = do
|
||||
#if MIN_VERSION_base(4,6,0)
|
||||
exe <- getExecutablePath
|
||||
|
@ -29,6 +30,4 @@ programPath = do
|
|||
#else
|
||||
p <- readProgramFile
|
||||
#endif
|
||||
-- In case readProgramFile returned just the command name,
|
||||
-- fall back to finding it in PATH.
|
||||
searchPath p
|
||||
maybe cannotFindProgram return =<< searchPath p
|
||||
|
|
|
@ -36,8 +36,7 @@ upgradeWatcherThread urlrenderer = namedThread "UpgradeWatcher" $ do
|
|||
showSuccessfulUpgrade urlrenderer
|
||||
go =<< liftIO upgradeFlagFile
|
||||
where
|
||||
go Nothing = debug [ "cannot determine program path" ]
|
||||
go (Just flagfile) = do
|
||||
go flagfile = do
|
||||
mvar <- liftIO $ newMVar InStartupScan
|
||||
changed <- Just <$> asIO2 (changedFile urlrenderer mvar flagfile)
|
||||
let hooks = mkWatchHooks
|
||||
|
|
|
@ -288,11 +288,8 @@ removeEmptyRecursive dir = do
|
|||
{- This is a file that the UpgradeWatcher can watch for modifications to
|
||||
- detect when git-annex has been upgraded.
|
||||
-}
|
||||
upgradeFlagFile :: IO (Maybe FilePath)
|
||||
upgradeFlagFile = ifM usingDistribution
|
||||
( Just <$> programFile
|
||||
, programPath
|
||||
)
|
||||
upgradeFlagFile :: IO FilePath
|
||||
upgradeFlagFile = programPath
|
||||
|
||||
{- Sanity check to see if an upgrade is complete and the program is ready
|
||||
- to be run. -}
|
||||
|
@ -303,10 +300,7 @@ upgradeSanityCheck = ifM usingDistribution
|
|||
-- Ensure that the program is present, and has no writers,
|
||||
-- and can be run. This should handle distribution
|
||||
-- upgrades, manual upgrades, etc.
|
||||
v <- programPath
|
||||
case v of
|
||||
Nothing -> return False
|
||||
Just program -> do
|
||||
program <- programPath
|
||||
untilM (doesFileExist program <&&> nowriter program) $
|
||||
threadDelaySeconds (Seconds 60)
|
||||
boolSystem program [Param "version"]
|
||||
|
|
|
@ -62,8 +62,13 @@ readProgramFile = do
|
|||
( return p
|
||||
, ifM (inPath cmd)
|
||||
( return cmd
|
||||
, error $ "cannot find git-annex program in PATH or in the location listed in " ++ programfile
|
||||
, cannotFindProgram
|
||||
)
|
||||
)
|
||||
where
|
||||
cmd = "git-annex"
|
||||
|
||||
cannotFindProgram :: IO a
|
||||
cannotFindProgram = do
|
||||
f <- programFile
|
||||
error $ "cannot find git-annex program in PATH or in the location listed in " ++ f
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue