packages feed

cabalish-0.1.0.0: src/Main.hs

module Main where

import Prelude ()
import ClassyPrelude
import Arguments
import System.FilePath (FilePath)
import Distribution.Package
import Distribution.PackageDescription
import Distribution.PackageDescription.Parse (readPackageDescription)
import Distribution.Version (Version(..))
import Distribution.Verbosity (verbose)
import qualified Data.Text as T

main :: IO ()
main = run =<< readOpts

run :: RunOpts -> IO ()
run opts = case optCommand opts of
             FetchName fetchOpts -> runFetchName filepath fetchOpts
             FetchVersion fetchOpts -> runFetchVersion filepath fetchOpts
  where
    filepath = optFilepath opts

runFetchName :: FilePath -> FetchNameOpts -> IO ()
runFetchName filepath _ = do
  pkgDesc <- readCabalFile filepath
  let name = unPackageName $ pkgName $ package pkgDesc
  putStr $ T.pack name

runFetchVersion :: FilePath -> FetchVersionOpts -> IO ()
runFetchVersion filepath _ = do
  pkgDesc <- readCabalFile filepath
  let version = intercalate "." $ map show $ versionBranch $ pkgVersion $ package pkgDesc
  putStr $ T.pack version

readCabalFile :: FilePath -> IO PackageDescription
readCabalFile filepath = packageDescription <$> readPackageDescription verbose filepath