ngx-export-distribution-0.6.1.0: NgxExport/Distribution/Compat/Verbosity.hs
{-# LANGUAGE CPP #-}
-----------------------------------------------------------------------------
-- |
-- Module : NgxExport.Distribution.Compat.Verbosity
-- Copyright : (c) Alexey Radkov 2026
-- License : BSD-style
--
-- Maintainer : alexey.radkov@gmail.com
-- Stability : experimental
-- Portability : portable
--
-- Utility functions to extract and combine different Cabal verbosity object
-- parts. The functions are meant to be used internally and only exported for
-- usage in utility /nhm-tool/.
--
-----------------------------------------------------------------------------
module NgxExport.Distribution.Compat.Verbosity (
-- * Compatibility layer between Cabal /3.16/ and /3.18/
toVerbosityFlags
,toVerbosity
,extractVerbosityFlags
,defaultVerbosity
) where
import Distribution.Simple.Flag (Flag, fromFlagOrDefault)
#if MIN_VERSION_Cabal(3,18,0)
#define VERBOSITY_FLAGS VerbosityFlags
#define VERBOSITY_HANDLES VerbosityHandles
#define TO_VERBOSITY_FLAGS(verbosity) (verbosityFlags (verbosity))
#define TO_VERBOSITY(flags, handles) (Verbosity (flags) (handles))
import Distribution.Verbosity (Verbosity (..)
,VerbosityFlags, verbosityFlags, normal
,VerbosityHandles, defaultVerbosityHandles
)
defaultVerbosityHandles_ :: VERBOSITY_HANDLES
defaultVerbosityHandles_ = defaultVerbosityHandles
#else
#define VERBOSITY_FLAGS Verbosity
#define VERBOSITY_HANDLES ()
#define TO_VERBOSITY_FLAGS(verbosity) (verbosity)
#define TO_VERBOSITY(flags, handles) (flags)
import Distribution.Verbosity (Verbosity, normal)
#endif
-- | Extracts /verbosity flags/ from 'Verbosity'.
--
-- With Cabal /3.16/ and older it simply returns the passed argument.
toVerbosityFlags :: Verbosity -> VERBOSITY_FLAGS
toVerbosityFlags verbosity = TO_VERBOSITY_FLAGS(verbosity)
{-# ANN toVerbosityFlags "HLint: ignore Redundant bracket" #-}
-- | Builds 'Verbosity' from the passed /verbosity flags/ and default
-- /verbosity handles/.
--
-- With Cabal /3.16/ and older it simply returns the passed argument.
toVerbosity :: VERBOSITY_FLAGS -> Verbosity
toVerbosity flags = TO_VERBOSITY(flags, defaultVerbosityHandles_)
{-# ANN toVerbosity "HLint: ignore Redundant bracket" #-}
-- | Extracts /verbosity flags/ from the passed flag.
--
-- Returns the extracted /verbosity flags/ or 'normal' on failure.
extractVerbosityFlags :: Flag VERBOSITY_FLAGS -> VERBOSITY_FLAGS
extractVerbosityFlags = fromFlagOrDefault $ toVerbosityFlags defaultVerbosity
-- | Builds verbosity from default /verbosity flags/ and /verbosity handles/.
--
-- With Cabal /3.16/ and older it simply returns 'normal'. With Cabal /3.18/
-- and newer it combines 'normal' and default /verbosity handles/ into
-- 'Verbosity'.
defaultVerbosity :: Verbosity
defaultVerbosity = toVerbosity normal