From 33e51a3a20024561b2f9c38a35f4a00856b25ce1 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Mon, 14 Sep 2009 10:58:23 +0000 Subject: [PATCH] Add "ghc-pkg init" command for creating a new package DB --- utils/ghc-pkg/Main.hs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/utils/ghc-pkg/Main.hs b/utils/ghc-pkg/Main.hs index 114ce24..aa81178 100644 --- a/utils/ghc-pkg/Main.hs +++ b/utils/ghc-pkg/Main.hs @@ -173,6 +173,12 @@ ourCopyright = "GHC package manager version " ++ Version.version ++ "\n" usageHeader :: String -> String usageHeader prog = substProg prog $ "Usage:\n" ++ + " $p init {path}\n" ++ + " Create and initialise a package database at the location {path}.\n" ++ + " Packages can be registered in the new database using the register\n" ++ + " command with --package-conf={path}. To use the new database with GHC,\n" ++ + " use GHC's -package-conf flag.\n" ++ + "\n" ++ " $p register {filename | -}\n" ++ " Register the package using the specified installed package\n" ++ " description. The syntax for the latter is given in the $p\n" ++ @@ -306,6 +312,8 @@ runit verbosity cli nonopts = do print filename glob filename >>= print #endif + ["init", filename] -> + initPackageDB filename verbosity cli ["register", filename] -> registerPackage filename verbosity cli auto_ghci_libs False force ["update", filename] -> @@ -600,6 +608,18 @@ cachefilename :: FilePath cachefilename = "package.cache" -- ----------------------------------------------------------------------------- +-- Creating a new package DB + +initPackageDB :: FilePath -> Verbosity -> [Flag] -> IO () +initPackageDB filename verbosity _flags = do + let eexist = die ("cannot create: " ++ filename ++ " already exists") + b1 <- doesFileExist filename + when b1 eexist + b2 <- doesDirectoryExist filename + when b2 eexist + changeDB verbosity [] PackageDB{ location = filename, packages = [] } + +-- ----------------------------------------------------------------------------- -- Registering registerPackage :: FilePath -- 1.7.10.4