File: Main.hs

package info (click to toggle)
haskell-hpack 0.38.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 552 kB
  • sloc: haskell: 8,407; makefile: 3
file content (21 lines) | stat: -rw-r--r-- 745 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{-# LANGUAGE LambdaCase #-}
module Main (main) where

import           System.Environment

import qualified Hpack
import           Hpack.Config
import           Control.Exception

main :: IO ()
main = getArgs >>= \ case
  ["list"] -> exposedModules packageConfig >>= mapM_ (putStrLn . unModule)
  args -> Hpack.getOptions packageConfig args >>= mapM_ (uncurry Hpack.hpack)

exposedModules :: FilePath -> IO [Module]
exposedModules file = readPackageConfig defaultDecodeOptions {decodeOptionsTarget = file} >>= \ case
  Left err -> throwIO $ ErrorCall err
  Right result -> return $ modules result
  where
    modules :: DecodeResult -> [Module]
    modules = maybe [] (libraryExposedModules . sectionData) . packageLibrary . decodeResultPackage