summaryrefslogtreecommitdiff
path: root/compiler/GHC/Utils/CliOption.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Utils/CliOption.hs')
-rw-r--r--compiler/GHC/Utils/CliOption.hs27
1 files changed, 27 insertions, 0 deletions
diff --git a/compiler/GHC/Utils/CliOption.hs b/compiler/GHC/Utils/CliOption.hs
new file mode 100644
index 0000000000..9f2333d351
--- /dev/null
+++ b/compiler/GHC/Utils/CliOption.hs
@@ -0,0 +1,27 @@
+module GHC.Utils.CliOption
+ ( Option (..)
+ , showOpt
+ ) where
+
+import GHC.Prelude
+
+-- -----------------------------------------------------------------------------
+-- 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 ( Eq )
+
+showOpt :: Option -> String
+showOpt (FileOption pre f) = pre ++ f
+showOpt (Option s) = s