@@ -188,6 +188,15 @@ listDependencies = do
188 trans <- getTransitiveDeps db depends
188 trans <- getTransitiveDeps db depends
189 traverse_ (echo . fst) trans
189 traverse_ (echo . fst) trans
191+listPackages :: IO ()
193+ pkg <- readPackageFile
194+ db <- readPackageSet pkg
195+ traverse_ echo (fmt <$> Map.assocs db)
197+ fmt :: (Text, PackageInfo) -> Text
198+ fmt (name, PackageInfo{ version }) = name <> " (" <> version <> ")"
191getSourcePaths :: PackageConfig -> PackageSet -> [Text] -> IO [Turtle.FilePath]
200getSourcePaths :: PackageConfig -> PackageSet -> [Text] -> IO [Turtle.FilePath]
192getSourcePaths PackageConfig{..} db pkgNames = do
201getSourcePaths PackageConfig{..} db pkgNames = do
193 trans <- getTransitiveDeps db pkgNames
202 trans <- getTransitiveDeps db pkgNames
@@ -252,6 +261,9 @@ main = do
252 , Opts.command "sources"
261 , Opts.command "sources"
253 (Opts.info (pure listSourcePaths)
262 (Opts.info (pure listSourcePaths)
254 (Opts.progDesc "List all (active) source paths for dependencies"))
263 (Opts.progDesc "List all (active) source paths for dependencies"))
264+ , Opts.command "available"
265+ (Opts.info (pure listPackages)
266+ (Opts.progDesc "List all packages available in the package set"))
257 pkg = Opts.strArgument $
269 pkg = Opts.strArgument $