packages feed

depends-0.0.1: src/Cabal.hs

module Cabal where

import Data.List
import Data.Version

import GhcPkg

format :: String -> [Package] -> [Package] -> String
format name mainDeps testDeps = unlines [
    "-- NOTE:"
  , "--"
  , "-- This file was generated from dependencies.yaml.  To regenerate it run"
  , "-- `depends`."
  , "--"
  , "name: " ++ name
  , "version: 0.0.0"
  , "build-type: Simple"
  , "cabal-version: >= 1.8"
  , ""
  , "executable " ++ name
  , "  ghc-options: -Wall"
  , "  hs-source-dirs: src"
  , "  main-is: Main.hs"
  ] ++ builDepends mainDeps ++ unlines [
    ""
  , "test-suite test"
  , "  type: exitcode-stdio-1.0"
  , "  ghc-options: -Wall -Werror"
  , "  hs-source-dirs: test, src"
  , "  main-is: Main.hs"
  ] ++ builDepends testDeps
  where
    builDepends deps
      | null deps = ""
      | otherwise = "  build-depends:\n      " ++ intercalate "\n    , " (map formatDep deps) ++ "\n"

    formatDep :: Package -> String
    formatDep (Package n v) = n ++ " == " ++ showVersion v