blob: 9d9c5dc1bcbce2aab99effee58dfd4083355e50b (
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
|
module Main where
import Options.Applicative
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
|