Parse command-line parameters
This commit is contained in:
parent
04036bb047
commit
8f9b082eb4
2 changed files with 57 additions and 4 deletions
41
app/MimaRun.hs
Normal file
41
app/MimaRun.hs
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
module MimaRun where
|
||||||
|
|
||||||
|
import Options.Applicative
|
||||||
|
|
||||||
|
data Settings = Settings
|
||||||
|
{ file :: String
|
||||||
|
, steps :: Maybe Integer
|
||||||
|
, memoryDump :: Maybe FilePath
|
||||||
|
, quiet :: Bool
|
||||||
|
, sparseOutput :: Bool
|
||||||
|
} deriving (Show)
|
||||||
|
|
||||||
|
settings :: Parser Settings
|
||||||
|
settings = Settings
|
||||||
|
<$> strArgument
|
||||||
|
(metavar "INFILE"
|
||||||
|
<> help "The memory dump to load and execute")
|
||||||
|
<*> (optional . option auto)
|
||||||
|
(long "steps"
|
||||||
|
<> short 'n'
|
||||||
|
<> metavar "N"
|
||||||
|
<> help "How many instructions to execute (if not specified, runs until HALT or execution exception)")
|
||||||
|
<*> (optional . strOption)
|
||||||
|
(long "dump"
|
||||||
|
<> short 'd'
|
||||||
|
<> metavar "OUTFILE"
|
||||||
|
<> help "If specified, the MiMa's memory is dumped to this file after execution is finished")
|
||||||
|
<*> flag False True
|
||||||
|
(long "quiet"
|
||||||
|
<> short 'q'
|
||||||
|
<> help "Whether to print the memory after execution is finished")
|
||||||
|
<*> flag False True
|
||||||
|
(long "sparse"
|
||||||
|
<> short 's'
|
||||||
|
<> help "Whether to print memory locations that contain 0")
|
||||||
|
|
||||||
|
opts :: ParserInfo Settings
|
||||||
|
opts = info (helper <*> settings) $ fullDesc <> failureCode 1
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = execParser opts >>= print
|
||||||
12
package.yaml
12
package.yaml
|
|
@ -23,11 +23,23 @@ dependencies:
|
||||||
- bytestring >= 0.10.8 && < 0.11
|
- bytestring >= 0.10.8 && < 0.11
|
||||||
- containers >= 0.6.0 && < 0.7
|
- containers >= 0.6.0 && < 0.7
|
||||||
- text >= 1.2.3 && < 1.3
|
- text >= 1.2.3 && < 1.3
|
||||||
|
- optparse-applicative >= 0.14.3 && < 0.15
|
||||||
|
|
||||||
library:
|
library:
|
||||||
source-dirs: src
|
source-dirs: src
|
||||||
|
|
||||||
executables:
|
executables:
|
||||||
|
mima-run:
|
||||||
|
main: MimaRun.hs
|
||||||
|
source-dirs: app
|
||||||
|
ghc-options:
|
||||||
|
- -main-is MimaRun
|
||||||
|
- -threaded
|
||||||
|
- -rtsopts
|
||||||
|
- -with-rtsopts=-N
|
||||||
|
dependencies:
|
||||||
|
- mima-tools
|
||||||
|
|
||||||
mima-tools-exe:
|
mima-tools-exe:
|
||||||
main: Main.hs
|
main: Main.hs
|
||||||
source-dirs: app
|
source-dirs: app
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue