- [ List ] -> listPackages packages
- [ Add upd ] -> addPackage packages conf_file input_file
- auto_ghci_libs upd force
- [ Remove p ] -> removePackage packages conf_file p
- [ Show p ] -> showPackage packages conf_file p fields
- _ -> die (usageInfo usageHeader flags)
-
-
-listPackages :: [PackageConfig] -> IO ()
-listPackages packages = hPutStrLn stdout (listPkgs packages)
+ [ List ] -> listPackages pkg_confs conf_filenames
+ [ ListLocal ] -> listPackages [head pkg_confs] [""]
+ [ Add upd ] -> addPackage pkg_confs defines
+ conf_filename input_file
+ auto_ghci_libs upd force
+ [ Remove p ] -> removePackage pkg_confs conf_filename p
+ [ Show p ] -> showPackage pkg_confs conf_filename p fields
+ _ -> do prog <- getProgramName
+ die (usageInfo (usageHeader prog) flags)
+
+
+listPackages :: [[PackageConfig]] -> [FilePath] -> IO ()
+listPackages pkg_confs conf_filenames = do
+ zipWithM_ show_pkgconf pkg_confs conf_filenames
+ where show_pkgconf pkg_conf filename =
+ hPutStrLn stdout (render $
+ if null filename
+ then packages
+ else text (filename ++ ":") $$ nest 4 packages
+ )
+ where packages = fsep (punctuate comma (map (text . name) pkg_conf))