diff options
author | Ian Lynagh <ian@well-typed.com> | 2013-04-28 21:50:47 +0100 |
---|---|---|
committer | Ian Lynagh <ian@well-typed.com> | 2013-04-28 21:50:47 +0100 |
commit | 49e6606b92d3b572da125602352dae96dd1a76cd (patch) | |
tree | 1965f2f187472b518741ab719535209311e6b1cc /utils | |
parent | a9608cb9d91cf3eb80cab791998d0c577ed17608 (diff) | |
download | haskell-49e6606b92d3b572da125602352dae96dd1a76cd.tar.gz |
Make "ghc-pkg field pkg field --simple-output" do something useful
It used to just ignore the --simple-output flag
Diffstat (limited to 'utils')
-rw-r--r-- | utils/ghc-pkg/Main.hs | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/utils/ghc-pkg/Main.hs b/utils/ghc-pkg/Main.hs index 2e7bab6cc4..816e9eb0d0 100644 --- a/utils/ghc-pkg/Main.hs +++ b/utils/ghc-pkg/Main.hs @@ -1156,28 +1156,32 @@ describeField verbosity my_flags pkgarg fields expand_pkgroot = do fns <- toFields fields ps <- findPackages flag_db_stack pkgarg mapM_ (selectFields fns) ps - where toFields [] = return [] - toFields (f:fs) = case toField f of + where defaultShowFun = if FlagSimpleOutput `elem` my_flags + then showSimpleInstalledPackageInfoField + else showInstalledPackageInfoField + toFields [] = return [] + toFields (f:fs) = case toField defaultShowFun f of Nothing -> die ("unknown field: " ++ f) Just fn -> do fns <- toFields fs return (fn:fns) selectFields fns pinfo = mapM_ (\fn->putStrLn (fn pinfo)) fns -toField :: String -> Maybe (InstalledPackageInfo -> String) +toField :: (String -> Maybe (InstalledPackageInfo -> String)) -> String + -> Maybe (InstalledPackageInfo -> String) -- backwards compatibility: -toField "import_dirs" = Just $ strList . importDirs -toField "source_dirs" = Just $ strList . importDirs -toField "library_dirs" = Just $ strList . libraryDirs -toField "hs_libraries" = Just $ strList . hsLibraries -toField "extra_libraries" = Just $ strList . extraLibraries -toField "include_dirs" = Just $ strList . includeDirs -toField "c_includes" = Just $ strList . includes -toField "package_deps" = Just $ strList . map display. depends -toField "extra_cc_opts" = Just $ strList . ccOptions -toField "extra_ld_opts" = Just $ strList . ldOptions -toField "framework_dirs" = Just $ strList . frameworkDirs -toField "extra_frameworks"= Just $ strList . frameworks -toField s = showInstalledPackageInfoField s +toField _ "import_dirs" = Just $ strList . importDirs +toField _ "source_dirs" = Just $ strList . importDirs +toField _ "library_dirs" = Just $ strList . libraryDirs +toField _ "hs_libraries" = Just $ strList . hsLibraries +toField _ "extra_libraries" = Just $ strList . extraLibraries +toField _ "include_dirs" = Just $ strList . includeDirs +toField _ "c_includes" = Just $ strList . includes +toField _ "package_deps" = Just $ strList . map display. depends +toField _ "extra_cc_opts" = Just $ strList . ccOptions +toField _ "extra_ld_opts" = Just $ strList . ldOptions +toField _ "framework_dirs" = Just $ strList . frameworkDirs +toField _ "extra_frameworks" = Just $ strList . frameworks +toField defaultShowFun s = defaultShowFun s strList :: [String] -> String strList = show |