{-# LINE 1 "internal/Quaalude.cpphs" #-}
# 1 "internal/Quaalude.cpphs"
# 1 "<built-in>"
# 1 "<command-line>"
# 12 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 17 "/usr/include/stdc-predef.h" 3 4
# 12 "<command-line>" 2
# 1 "./dist/build/quaalude/autogen/cabal_macros.h" 1
# 13 "./dist/build/quaalude/autogen/cabal_macros.h"
# 24 "./dist/build/quaalude/autogen/cabal_macros.h"
# 35 "./dist/build/quaalude/autogen/cabal_macros.h"
# 46 "./dist/build/quaalude/autogen/cabal_macros.h"
# 57 "./dist/build/quaalude/autogen/cabal_macros.h"
# 68 "./dist/build/quaalude/autogen/cabal_macros.h"
# 79 "./dist/build/quaalude/autogen/cabal_macros.h"
# 90 "./dist/build/quaalude/autogen/cabal_macros.h"
# 101 "./dist/build/quaalude/autogen/cabal_macros.h"
# 112 "./dist/build/quaalude/autogen/cabal_macros.h"
# 123 "./dist/build/quaalude/autogen/cabal_macros.h"
# 134 "./dist/build/quaalude/autogen/cabal_macros.h"
# 145 "./dist/build/quaalude/autogen/cabal_macros.h"
# 156 "./dist/build/quaalude/autogen/cabal_macros.h"
# 167 "./dist/build/quaalude/autogen/cabal_macros.h"
# 178 "./dist/build/quaalude/autogen/cabal_macros.h"
# 189 "./dist/build/quaalude/autogen/cabal_macros.h"
# 200 "./dist/build/quaalude/autogen/cabal_macros.h"
# 211 "./dist/build/quaalude/autogen/cabal_macros.h"
# 222 "./dist/build/quaalude/autogen/cabal_macros.h"
# 233 "./dist/build/quaalude/autogen/cabal_macros.h"
# 244 "./dist/build/quaalude/autogen/cabal_macros.h"
# 255 "./dist/build/quaalude/autogen/cabal_macros.h"
# 266 "./dist/build/quaalude/autogen/cabal_macros.h"
# 277 "./dist/build/quaalude/autogen/cabal_macros.h"
# 288 "./dist/build/quaalude/autogen/cabal_macros.h"
# 299 "./dist/build/quaalude/autogen/cabal_macros.h"
# 310 "./dist/build/quaalude/autogen/cabal_macros.h"
# 321 "./dist/build/quaalude/autogen/cabal_macros.h"
# 332 "./dist/build/quaalude/autogen/cabal_macros.h"
# 343 "./dist/build/quaalude/autogen/cabal_macros.h"
# 354 "./dist/build/quaalude/autogen/cabal_macros.h"
# 12 "<command-line>" 2
# 1 "/opt/ghc/8.6.1/lib/ghc-8.6.1/include/ghcversion.h" 1
# 12 "<command-line>" 2
# 1 "/tmp/ghc22055_0/ghc_2.h" 1
# 12 "<command-line>" 2
# 1 "internal/Quaalude.cpphs"
{-# LANGUAGE FlexibleContexts #-}
module Quaalude ( hex
, bool
, intersperse
, transpose
, sortBy
, void
, unless
, when
, join
, fold
, zipWithM_
, zipWithM
, filterM
, encode
, decode
, fromMaybe
, isNothing
, isPrefixOf
, isSuffixOf
, on
, both
, (***)
, (&&&)
, (<=<)
, ($>)
, first
, second
, getEnv
, exitWith
, showVersion
, traverse_
, nubSpecial
, (<>)
, ExitCode (ExitSuccess)
, MonadIO (..)
, makeExe
, shouldWrite
, silentCreateProcess
, Text
, pack
, unpack
, biaxe
, (.*)
, (.**)
, thread
, bisequence'
, Interpret
, Inject
, Generic
, Binary
, input
, auto
, detailed
, Rules
, Action
, command
, command_
, (%>)
, need
, want
, shake
, Rebuild (..)
, (~>)
, cmd
, cmd_
, ShakeOptions (..)
, shakeOptions
, copyFile'
, Change (..)
, Verbosity (..)
, removeFilesAfter
, Lint (..)
, takeBaseName
, takeFileName
, takeDirectory
, (-<.>)
, makeExecutable
, tlsManagerSettings
, newManager
, parseRequest
, httpLbs
, Response (..)
, Request (method, redirectCount)
, (</>)
, pathSeparator
, ByteString
, (<#>)
, (<+>)
, text
, punctuate
, dullred
, linebreak
, dullyellow
, hardline
, hang
, indent
, putDoc
, Pretty (pretty)
, module X
, Lens'
, over
, _Just
, view
, _1
, _2
, _4
, each
, (&)
, (%~)
) where
import Control.Arrow hiding ((<+>))
import Control.Composition
import Control.Monad
import Control.Monad.IO.Class
import Control.Monad.State.Lazy
import Data.Binary
import Data.Bool (bool)
import Data.ByteString.Lazy (ByteString)
import qualified Data.ByteString.Lazy as BSL
import Data.Containers.ListUtils (nubOrd)
import Data.Foldable (fold, traverse_)
import Data.Functor (($>))
import Data.List
import Data.Maybe (fromMaybe, isNothing)
import Data.Text.Lazy (Text, pack, unpack)
import Data.Version (showVersion)
import Development.Shake hiding (doesFileExist, getEnv)
import Development.Shake.FilePath
import Dhall hiding (Text, bool)
import Lens.Micro hiding (both)
import Lens.Micro.Extras
import Network.HTTP.Client
import Network.HTTP.Client.TLS (tlsManagerSettings)
import Numeric (showHex)
import System.Directory as X
import System.Environment (getEnv)
import System.Exit (ExitCode (ExitSuccess), exitWith)
import System.Info (os)
import System.Posix.Files
import System.Process as X
import System.Process.Ext
import Text.PrettyPrint.ANSI.Leijen hiding (bool, group, (<$>), (</>), (<>))
infixr 5 <#>
makeExecutable :: FilePath -> IO ()
makeExecutable = flip setFileMode ownerModes
nubSpecial :: (Ord a) => [[a]] -> [[a]]
nubSpecial = fmap pure . nubOrd . join
makeExe :: String
makeExe = case os of
"freebsd" -> "gmake"
"openbsd" -> "gmake"
"netbsd" -> "gmake"
"solaris" -> "gmake"
"dragonfly" -> "gmake"
_ -> "make"
hex :: Int -> String
hex = flip showHex mempty
(<#>) :: Doc -> Doc -> Doc
(<#>) a b = a <> line <> b
shouldWrite :: (MonadIO m, Binary a) => a -> FilePath -> m Bool
shouldWrite x fp = do
exists <- liftIO (doesFileExist fp)
contents <- if exists
then liftIO (BSL.readFile fp)
else pure mempty
pure $ BSL.length contents /= 0 && encode x /= contents