mirror of
https://git.cs.ou.nl/joshua.moerman/mealy-decompose.git
synced 2025-04-29 17:57:44 +02:00
66 lines
2.4 KiB
Haskell
66 lines
2.4 KiB
Haskell
{-# OPTIONS_GHC -Wno-missing-signatures #-}
|
|
|
|
-- | Copyright: (c) 2025 Joshua Moerman, Open Universiteit
|
|
-- SPDX-License-Identifier: EUPL-1.2
|
|
module Main where
|
|
|
|
import CommonOptions
|
|
import DecomposeInput
|
|
import DecomposeOutput
|
|
import DecomposeTemp
|
|
import HsiMethod
|
|
import LStarMain
|
|
import RandomGen
|
|
|
|
import Options.Applicative
|
|
import System.Directory
|
|
|
|
main = do
|
|
-- parse command and options
|
|
let opts = info optionsParser (fullDesc <> header "Tool(s) to decompose a finite state machine into separate components.")
|
|
Options{..} <- execParser opts
|
|
|
|
-- setup some logging facilities
|
|
createDirectoryIfMissing True (logDirectory commonOptions)
|
|
createDirectoryIfMissing True (resultsDirectory commonOptions)
|
|
|
|
-- dispatch to actual functionality, based on the command provided
|
|
case optCommand of
|
|
DecomposeOutput options -> mainDecomposeOutput options commonOptions
|
|
DecomposeInput options -> mainDecomposeInput options commonOptions
|
|
DecomposeTemp options -> mainDecomposeTemp options
|
|
HsiMethod options -> mainHsiMethod options
|
|
LStar options -> mainLStar options
|
|
RandomGen options -> mainRandomGen options
|
|
|
|
data Options = Options
|
|
{ optCommand :: Command
|
|
, commonOptions :: CommonOptions
|
|
}
|
|
deriving Show
|
|
|
|
optionsParser =
|
|
Options
|
|
<$> commandParser
|
|
<*> commonOptionsParser
|
|
<**> helper
|
|
<**> simpleVersioner "0.4.0.0"
|
|
|
|
data Command
|
|
= DecomposeOutput DecomposeOutputOptions
|
|
| DecomposeInput DecomposeInputOptions
|
|
| DecomposeTemp DecomposeTempOptions
|
|
| HsiMethod HsiMethodOptions
|
|
| LStar LStarOptions
|
|
| RandomGen RandomGenOptions
|
|
deriving Show
|
|
|
|
commandParser =
|
|
hsubparser
|
|
( command "decompose-output" (info (DecomposeOutput <$> decomposeOutputOptionsParser) (progDesc "decompose based on output"))
|
|
<> command "decompose-input" (info (DecomposeInput <$> decomposeInputOptionsParser) (progDesc "decompose based on independent inputs"))
|
|
<> command "decompose-temp" (info (DecomposeTemp <$> decomposeTempOptionsParser) (progDesc "temporary experiment"))
|
|
<> command "hsi-method" (info (HsiMethod <$> hsiMethodOptionsParser) (progDesc "construct HSI test suite from specification dot file"))
|
|
<> command "lstar" (info (LStar <$> lStarOptionsParser) (progDesc "little l* playground"))
|
|
<> command "random-gen" (info (RandomGen <$> randomGenOptionsParser) (progDesc "generate random parallel compositions"))
|
|
)
|