{-# OPTIONS -fno-warn-orphans #-} {-# OPTIONS -fno-warn-orphans #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TemplateHaskell #-} -- | Main compiler executable. module Main where import Language.Fay import Language.Fay.Compiler import Language.Fay.Types import Paths_fay (version) import qualified Control.Exception as E import Control.Monad import Control.Monad.Error import Data.Default import Data.Maybe import Data.Version (showVersion) import Options import System.Console.Haskeline import System.Environment import System.Exit import System.IO -- | Options and help. defineOptions "FayCompilerOptions" $ do -- boolOption "optExportBuiltins" "export-builtins" True "" -- boolOption "optTCO" "tco" False "" boolOption "optAutoRun" "autorun" False "automatically call main in generated JavaScript" boolOption "optInlineForce" "inline-force" False "inline forcing, adds some speed for numbers, blows up code a bit" boolOption "optFlattenApps" "flatten-apps" False "flatten function applicaton" boolOption "optHTMLWrapper" "html-wrapper" False "Create an html file that loads the javascript" stringsOption "optHTMLJSLibs" "html-js-lib" [] "file1[, ..] javascript files to add to
if using option html-wrapper" stringsOption "optInclude" "include" [] "dir1[, ..] additional directories for include" option "optStdout" (\o -> o { optionLongFlags = ["stdout"] , optionShortFlags = ['s'] , optionDefault = "false" , optionType = optionTypeBool , optionDescription = "Output to stdout" }) option "optVersion" (\o -> o { optionLongFlags = ["version"] , optionShortFlags = ['v'] , optionDefault = "false" , optionType = optionTypeBool , optionDescription = "Output version number" }) option "optOutput" (\o -> o { optionLongFlags = ["output"] , optionShortFlags = ['o'] , optionDefault = "" , optionType = optionTypeMaybe optionTypeString , optionDescription = "Output to specified file" }) option "optPretty" (\o -> o { optionLongFlags = ["pretty"] , optionShortFlags = ['p'] , optionDefault = "false" , optionType = optionTypeBool , optionDescription = "Run javascript through js-beautify" }) -- | The basic help text. helpTxt :: [String] helpTxt = ["fay -- The fay compiler from (a proper subset of) Haskell to Javascript" ,"USAGE" ," fay [OPTIONS] [- |