packages feed

templatise-0.1.3.0: lib/initialise/Licence.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}

module Licence
  ( replace,
  )
where

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

replace :: FilePath -> Initialiser ()
replace p = do
  Configuration {..} <- ask
  unless (licence == Unlicense) $ do
    $logInfo ("replacing LICENSE " <> pack (show p))
    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