@@ -21,7 +21,7 @@ import MicroCabal.Unix
2121
2222-- Update cabal file when this changes
2323version :: String
24- version = " MicroCabal 0.5.7 .0"
24+ version = " MicroCabal 0.5.8 .0"
2525
2626main :: IO ()
2727main = do
@@ -142,7 +142,7 @@ cmdUpdate env [] = do
142142 let yml = parseYAML stk file
143143 pkgs = map hackName $ yamlToStackageList yml ++ dist
144144 ghcVersion = yamlToGHCVersion yml
145- hackName s = s{ stName = n, stVersion = v } where (n, v) = patchName (backend env) (stName s, stVersion s)
145+ hackName s = s{ stName = n, stVersion = v } where (n, v) = patchName (backend env) env (stName s, stVersion s)
146146-- putStrLn $ "==== " ++ ghcVersion
147147-- putStrLn $ showYAML yml
148148-- putStrLn $ show pkgs
@@ -210,21 +210,24 @@ cmdFetch env [pkg] = do
210210 pkgz = pkgs ++ " .tar.gz"
211211 pdir = dirForPackage env st
212212 file = pdir ++ " .tar.gz"
213- b <- doesDirectoryExist pdir
214- if b then
215- message env 1 $ " Already in " ++ pdir
216- else do
217- mkdir env pdir
218- message env 1 $ " Fetching package " ++ pkgs
219- case gitRepo env of
220- Nothing -> do
213+ case gitRepo env of
214+ Nothing -> do
215+ -- Doing a regular hackage fetch.
216+ b <- doesDirectoryExist pdir
217+ if b then
218+ message env 1 $ " No fetch, directory already exists " ++ pdir
219+ else do
221220 message env 1 $ " Fetching from Hackage " ++ pkgz
221+ mkdir env pdir
222222 wget env url file
223223 message env 1 $ " Unpacking " ++ pkgz ++ " in " ++ pdir
224224 tarx env (dirPackage env) file
225- Just repo -> do
226- message env 1 $ " Fetching from git repo " ++ pkg
227- gitClone env pdir (URL repo)
225+ Just repo -> do
226+ -- Doing a git fetch.
227+ -- With --git we will always fetch, blowing away the old repo.
228+ rmrf env pdir
229+ message env 1 $ " Fetching from git repo " ++ pkg
230+ gitClone env pdir (URL repo)
228231cmdFetch _ _ = usage
229232
230233-----------------------------------------
@@ -240,13 +243,13 @@ findCabalFile _env = do
240243cmdBuild :: Env -> [String ] -> IO ()
241244cmdBuild env [] = build env
242245cmdBuild env [apkg] = do
243- let pkg = fst $ patchName (backend env) (apkg, undefined )
246+ let pkg = fst $ patchName (backend env) env (apkg, undefined )
244247 message env 0 $ " Build package " ++ pkg
245248 st <- getPackageInfo env pkg
246249 let dir = dirForPackage env st
247250 b <- doesDirectoryExist dir
248- when (not b) $ do
249- message env 0 $ " Package not found, running 'fetch " ++ pkg ++ " '"
251+ when (not b || isJust (gitRepo env) ) $ do
252+ message env 0 $ " Running 'fetch " ++ pkg ++ " '"
250253 cmdFetch env [pkg]
251254 message env 0 $ " Building in " ++ dir
252255 let dir' = maybe dir (dir </> ) (subDir env)
@@ -508,4 +511,4 @@ cmdParse env [fn] = do
508511cmdParse _ _ = error " cmdParse"
509512
510513normalizeAndPatch :: Env -> FlagInfo -> Cabal -> Cabal
511- normalizeAndPatch env flags = patchDepends (backend env) . normalize flags
514+ normalizeAndPatch env flags = patchDepends (backend env) env . normalize flags
0 commit comments