blob: 68cef7c63aa802548ae12c9127f70a8a33dad1df (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
module Main where
import Options.Applicative ( Parser
, (<**>)
, command
, execParser
, fullDesc
, info
, header
, helper
, progDesc
, subparser
)
newtype Arguments = Arguments { command' :: Command }
data Command = Run | Test | Build
main :: IO ()
main = do
args <- getArguments
run args
run :: Arguments -> IO ()
run args = case command' args of
Run -> putStrLn "Run"
Test -> putStrLn "Test"
Build -> putStrLn "Build"
getArguments :: IO Arguments
getArguments = execParser
(info
(arguments <**> helper)
(fullDesc <> progDesc "Work with Fortran projects" <> header
"fpm - A Fortran package manager and build system"
)
)
arguments :: Parser Arguments
arguments = subparser
( command "run" (info runArguments (progDesc "Run the executable"))
<> command "test" (info testArguments (progDesc "Run the tests"))
<> command "build" (info buildArguments (progDesc "Build the executable"))
)
runArguments :: Parser Arguments
runArguments = pure $ Arguments Run
testArguments :: Parser Arguments
testArguments = pure $ Arguments Test
buildArguments :: Parser Arguments
buildArguments = pure $ Arguments Build
|