on master help sign in
Make choosing which duplicate package to use deterministic
commit4c8dced58971ff7af55155e40263767519ca1aa8 authorTom Smalley <tfsmalley@gmail.com> dateThu 9 Apr 2020, 19:54 (7 years ago) parenta02f5ea
1 file changed+3−1
lib/command/src/Obelisk/Command/Run.hs+3−1
lib/command/src/Obelisk/Command/Run.hs+3−1
@@ -279,7 +279,9 @@ parsePackagesOrFail dirs = do
279279 | _cabalPackageInfo_buildable packageInfo -> Right packageInfo
280280 _ -> Left dir
281281
282− let packagesByName = Map.fromListWith (<>) [(_cabalPackageInfo_packageName p, p NE.:| []) | p <- packageInfos']
282+ -- Sort duplicate packages such that we prefer shorter paths, but fall back to alphabetical ordering.
283+ let packagesByName = Map.map (NE.sortBy $ comparing $ \p -> let n = _cabalPackageInfo_packageFile p in (length n, n))
284+ $ Map.fromListWith (<>) [(_cabalPackageInfo_packageName p, p NE.:| []) | p <- packageInfos']
283285 unambiguous <- ifor packagesByName $ \packageName ps -> case ps of
284286 p NE.:| [] -> pure p -- No ambiguity here
285287 p NE.:| _ -> do