packages feed

glirc-2.0: Setup.hs

{-|
Module      : Main
Description : Custom setup script
Copyright   : (c) Eric Mertens, 2016
License     : ISC
Maintainer  : emertens@gmail.com

This is a default setup script except that it checks that all
transitive dependencies of this package use free licenses.

-}

module Main (main) where

import Distribution.Simple
import Distribution.Simple.LocalBuildInfo
import Distribution.Simple.PackageIndex
import Distribution.InstalledPackageInfo
import Control.Monad

main :: IO ()
main = defaultMainWithHooks simpleUserHooks
  { postConf = \args flags pkg lbi ->
      do validateLicenses lbi
         postConf simpleUserHooks args flags pkg lbi
  }

validateLicenses :: LocalBuildInfo -> IO ()
validateLicenses lbi =
  do let p pkg = license pkg `notElem` freeLicenses
         badPkgs = filter p
                 $ allPackages
                 $ installedPkgs lbi

     unless (null badPkgs) $
       do mapM_ print badPkgs
          fail "BAD LICENSE"

freeLicenses :: [License]
freeLicenses = [ BSD2, BSD3, ISC, MIT ]