module CliOption ( Option (..) , showOpt ) where import GhcPrelude -- ----------------------------------------------------------------------------- -- Command-line options -- | When invoking external tools as part of the compilation pipeline, we -- pass these a sequence of options on the command-line. Rather than -- just using a list of Strings, we use a type that allows us to distinguish -- between filepaths and 'other stuff'. The reason for this is that -- this type gives us a handle on transforming filenames, and filenames only, -- to whatever format they're expected to be on a particular platform. data Option = FileOption -- an entry that _contains_ filename(s) / filepaths. String -- a non-filepath prefix that shouldn't be -- transformed (e.g., "/out=") String -- the filepath/filename portion | Option String deriving ( Option -> Option -> Bool (Option -> Option -> Bool) -> (Option -> Option -> Bool) -> Eq Option forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Option -> Option -> Bool $c/= :: Option -> Option -> Bool == :: Option -> Option -> Bool $c== :: Option -> Option -> Bool Eq ) showOpt :: Option -> String showOpt :: Option -> String showOpt (FileOption String pre String f) = String pre String -> String -> String forall a. [a] -> [a] -> [a] ++ String f showOpt (Option String s) = String s