packages feed

templatise-0.1.2.0: lib/initialise/Licence.hs

{-# LANGUAGE RecordWildCards #-}

module Licence (replace) where

import Configuration (Configuration (..))
import Control.Monad (unless)
import Control.Monad.Reader (ask, liftIO)
import Data.ByteString.Lazy (ByteString, writeFile)
import Distribution.SPDX.LicenseId (LicenseId (Unlicense), licenseId)
import Initialise.Types (Initialise)
import Network.HTTP.Client (responseBody)
import Network.HTTP.Simple (httpLBS, parseRequest)
import System.FilePath ((</>))
import Prelude hiding (writeFile)

replace :: FilePath -> Initialise ()
replace p = do
  Configuration {..} <- ask
  unless (licence == Unlicense) $
    liftIO (writeFile (path </> p) =<< contents licence)

contents :: LicenseId -> IO ByteString
contents l = do
  request <- parseRequest $ "https://spdx.org/licenses/" ++ licenseId l ++ ".txt"
  responseBody <$> httpLBS request